firebase / firebase/firebase-functions-test

[FR] firebase-functions-test multiple snapshots in wrapped functions

Open
#201 1 comment 0 reactions 0 assignees View on GitHub
triaged type: feature request
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.