firebase / firebase/firebase-functions-test
[FR] firebase-functions-test multiple snapshots in wrapped functions
- Dominant language
- TypeScript
- Stars
- 248
- Forks
- 63
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
I'm using firebase-functions-test package to locally mock firestore data and test non-http functions. However, on of my functions works with data in multiple collections, which based on the docs and articles I've found doesn't seem to be supported.
**Describe the solution you'd like**
When calling my wrapped function(s), I'd like to be able to pass in multiple document snapshots.
**Describe alternatives you've considered**
If I am to continue using the firebase-functions-test package, I could consider creating a chain of background functions that each work with documents from a single collection. I haven't seen anything saying whether that's a good approach so for all I know that might actually be the preferred way to do this, though it feels weird to me.
Another option would be to not use firebase-functions-test package and instead run my tests against the emulator. I had been doing this before but wanted to move away from that.
**Additional context**
Here is a code sample of what I'm looking to do, not sure that it's valid Typescript but hopefully it demonstrate the goal.
```
const snap1 = test.firestore.makeDocumentSnapshot({
...
}, "users/1");
const snap2 = test.firestore.makeDocumentSnapshot({
...
}, "users/2");
await wrapped([snap1, snap2], { // <-- Notice the array of snapshots
..
});
```
Contributor guide
Research direction
Start with the wrapped function API shown in the example and the makeDocumentSnapshot calls, then trace how the current wrapper accepts a snapshot. Check how background functions handle event data and determine the expected shape for multiple snapshots. Done means a wrapped function can receive snapshots from multiple collections, with tests covering the demonstrated array input.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- firebase, typescript
- Domain
- backend, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100