Skip to content

Commit 7c1c36a

Browse files
committed
Add docs how to use firebase messaging mock
1 parent 34bdeef commit 7c1c36a

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Firebase Mock supports the client-side [JavaScript API](https://firebase.google.
3535
* Authentication
3636
* [Basic](tutorials/admin/authentication.md)
3737
* [JWT Tokens](tutorials/admin/tokens.md)
38+
* [Messaging](tutorials/admin/messaging.md)
3839
* [Realtime Database](tutorials/admin/rtdb.md)
3940
* [Firestore](tutorials/admin/firestore.md)
4041
* [Storage](tutorials/admin/storage.md)

tutorials/admin/messaging.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Tutorial: Authentication
2+
3+
MockFirebase replaces most of Firebase's messaging method of the admin API with simple mocks. Messaging methods will always succeed unless an error is specifically specified using [`failNext`](../API.md#failnextmethod-err---undefined).
4+
5+
## Send message
6+
7+
In this example, we'll create send a new message using Firebase messaging.
8+
9+
##### Source
10+
11+
```js
12+
var ref;
13+
var messageService = {
14+
messaging: function () {
15+
if (!ref) ref = firebase.messaging();
16+
return ref;
17+
},
18+
send: function () {
19+
var message = {
20+
21+
};
22+
messageService.ref().send();
23+
},
24+
}
25+
```
26+
27+
##### Test
28+
29+
```js
30+
MockFirebase.override();
31+
var result = messageService.send();
32+
messageService.messaging().flush();
33+
result.then(function (messageId) {
34+
console.log(messageId);
35+
});
36+
```
37+
38+
## Supported methods
39+
40+
- [send(message: Message, dryRun?: boolean): Promise<string>](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging.html#send)
41+
- [sendAll(messages: Array<Message>, dryRun?: boolean): Promise<BatchResponse>](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging.html#send-all)
42+
- [sendMulticast(message: MulticastMessage, dryRun?: boolean): Promise<BatchResponse>](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging.html#send-multicast)
43+
44+
## Set custom message response
45+
In some cases it could be necessary to fake a custom send response (like a [BatchResponse](https://firebase.google.com/docs/reference/admin/node/admin.messaging.BatchResponse.html)). In this cases you can use `firebase.messaging().nextResult(methodName, result)` (similar to `firebase.messaging().failNext(methodName, err)`).
46+
47+
##### Source
48+
49+
```js
50+
var ref;
51+
var messageService = {
52+
messaging: function () {
53+
if (!ref) ref = firebase.messaging();
54+
return ref;
55+
},
56+
send: function () {
57+
var message = {
58+
59+
};
60+
messageService.ref().send();
61+
},
62+
}
63+
```
64+
65+
##### Test
66+
67+
```js
68+
MockFirebase.override();
69+
var batchResponse = {
70+
failureCount: 1,
71+
response: [
72+
{
73+
error: {...},
74+
messageId: undefined,
75+
success: false
76+
},
77+
{
78+
error: undefined,
79+
messageId: '...',
80+
success: true
81+
}
82+
],
83+
successCount: 1
84+
}
85+
messageService.messaging().nextResult('sendAll', batchResponse);
86+
var result = messageService.sendAll();
87+
messageService.messaging().flush();
88+
result.then(function (res) {
89+
console.assert(res.failureCount === 1, '1 message failed');
90+
console.assert(res.successCount === 1, '1 message succeeded');
91+
});
92+
```

0 commit comments

Comments
 (0)