Skip to content

Wrapped Gen 2 Firestore Trigger receives incorrect data  #238

Open
@MichaelJBerk

Description

Version info

firebase-functions-test: 5.0.1

firebase-functions: 3.3.0

firebase-admin: 12.2.0

Test case

When calling a wrapped function set to a Gen 2 Firestore trigger, the function will receive the value for the exampleDocumentSnapshot, rather than the actual value provided by the test:

/// Test Code
test("Write Item V2", async () => {
	const db = getFirestore()
	const path = `items/${generateTempId()}`
	const data = {name: "MyTest"}
	
	await db.doc(path).set(data)
	testEnv.firestore.exampleDocumentSnapshotChange()
	const wrapped = testEnv.wrap(myOnWriteTrigger)
	const beforeSnap = testEnv.firestore.makeDocumentSnapshot({name:'blah'}, path)
	const afterSnap = testEnv.firestore.makeDocumentSnapshot(data, path)
	const change = testEnv.makeChange(beforeSnap, afterSnap)
	
	await wrapped(change)
})

/// Cloud Function
export const myOnWriteTrigger = onDocumentWritten("items/{itemid}", async (event) => {
	///This will output "{ aString: 'foo', anObject: { a: 'qux', b: 'faz' }, aNumber: 7 }"
	console.log(event.data.after.data())
	///...
}

Steps to reproduce

I've created a sample project with the issue at https://github.com/MichaelJBerk/FirestoreFunctionsTriggerBug. View the readme for details

Expected behavior

event.data.after.data() should contain the data provided in the test

Actual behavior

event.data.after.data() contains the exampleDocumentSnapshot value ({ aString: 'foo', anObject: { a: 'qux', b: 'faz' }, aNumber: 7 })

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions