Wrapped Gen 2 Firestore Trigger receives incorrect data #238
Open
Description
opened on Jul 8, 2024
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