Skip to content

Commit 2c2775a

Browse files
rajveermalviyagnprice
authored andcommitted
notif test: Add more tests for messaging style notif
Add more tests for Android messaging style notif implementation, listed here: #718 (review)
1 parent 98374b5 commit 2c2775a

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

test/notifications/display_test.dart

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,66 @@ void main() {
279279
expectedTagComponent: expectedTagComponent);
280280
})));
281281

282+
test('stream message: multiple messages, different topics', () => runWithHttpClient(() => awaitFakeAsync((async) async {
283+
await init();
284+
final stream = eg.stream();
285+
const topicA = 'topic A';
286+
const topicB = 'topic B';
287+
final message1 = eg.streamMessage(topic: topicA, stream: stream);
288+
final data1 = messageFcmMessage(message1, streamName: stream.name);
289+
final message2 = eg.streamMessage(topic: topicB, stream: stream);
290+
final data2 = messageFcmMessage(message2, streamName: stream.name);
291+
final message3 = eg.streamMessage(topic: topicA, stream: stream);
292+
final data3 = messageFcmMessage(message3, streamName: stream.name);
293+
294+
await receiveFcmMessage(async, data1);
295+
checkNotification(data1,
296+
messageStyleMessages: [data1],
297+
expectedIsGroupConversation: true,
298+
expectedTitle: '#${stream.name} > $topicA',
299+
expectedTagComponent: 'stream:${stream.streamId}:$topicA');
300+
301+
await receiveFcmMessage(async, data2);
302+
checkNotification(data2,
303+
messageStyleMessages: [data2],
304+
expectedIsGroupConversation: true,
305+
expectedTitle: '#${stream.name} > $topicB',
306+
expectedTagComponent: 'stream:${stream.streamId}:$topicB');
307+
308+
await receiveFcmMessage(async, data3);
309+
checkNotification(data3,
310+
messageStyleMessages: [data1, data3],
311+
expectedIsGroupConversation: true,
312+
expectedTitle: '#${stream.name} > $topicA',
313+
expectedTagComponent: 'stream:${stream.streamId}:$topicA');
314+
})));
315+
316+
test('stream message: conversation stays same when stream is renamed', () => runWithHttpClient(() => awaitFakeAsync((async) async {
317+
await init();
318+
var stream = eg.stream(streamId: 1, name: 'Before');
319+
const topic = 'topic';
320+
final message1 = eg.streamMessage(topic: topic, stream: stream);
321+
final data1 = messageFcmMessage(message1, streamName: stream.name);
322+
323+
await receiveFcmMessage(async, data1);
324+
checkNotification(data1,
325+
messageStyleMessages: [data1],
326+
expectedIsGroupConversation: true,
327+
expectedTitle: '#Before > $topic',
328+
expectedTagComponent: 'stream:${stream.streamId}:$topic');
329+
330+
stream = eg.stream(streamId: 1, name: 'After');
331+
final message2 = eg.streamMessage(topic: topic, stream: stream);
332+
final data2 = messageFcmMessage(message2, streamName: stream.name);
333+
334+
await receiveFcmMessage(async, data2);
335+
checkNotification(data2,
336+
messageStyleMessages: [data1, data2],
337+
expectedIsGroupConversation: true,
338+
expectedTitle: '#After > $topic',
339+
expectedTagComponent: 'stream:${stream.streamId}:$topic');
340+
})));
341+
282342
test('stream message: stream name omitted', () => runWithHttpClient(() => awaitFakeAsync((async) async {
283343
await init();
284344
final stream = eg.stream();
@@ -308,6 +368,30 @@ void main() {
308368
expectedTagComponent: 'dm:${message.allRecipientIds.join(",")}');
309369
})));
310370

371+
test('group DM: title updates with latest sender', () => runWithHttpClient(() => awaitFakeAsync((async) async {
372+
await init();
373+
final message1 = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser, eg.thirdUser]);
374+
final data1 = messageFcmMessage(message1);
375+
final message2 = eg.dmMessage(from: eg.thirdUser, to: [eg.selfUser, eg.otherUser]);
376+
final data2 = messageFcmMessage(message2);
377+
378+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
379+
380+
await receiveFcmMessage(async, data1);
381+
checkNotification(data1,
382+
messageStyleMessages: [data1],
383+
expectedIsGroupConversation: true,
384+
expectedTitle: "${eg.otherUser.fullName} to you and 1 other",
385+
expectedTagComponent: expectedTagComponent);
386+
387+
await receiveFcmMessage(async, data2);
388+
checkNotification(data2,
389+
messageStyleMessages: [data1, data2],
390+
expectedIsGroupConversation: true,
391+
expectedTitle: "${eg.thirdUser.fullName} to you and 1 other",
392+
expectedTagComponent: expectedTagComponent);
393+
})));
394+
311395
test('1:1 DM', () => runWithHttpClient(() => awaitFakeAsync((async) async {
312396
await init();
313397
final message = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser]);
@@ -317,6 +401,60 @@ void main() {
317401
expectedTagComponent: 'dm:${message.allRecipientIds.join(",")}');
318402
})));
319403

404+
test('1:1 DM: title updates when sender name changes', () => runWithHttpClient(() => awaitFakeAsync((async) async {
405+
await init();
406+
final otherUser = eg.user(fullName: 'Before');
407+
final message1 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
408+
final data1 = messageFcmMessage(message1);
409+
410+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
411+
412+
await receiveFcmMessage(async, data1);
413+
checkNotification(data1,
414+
messageStyleMessages: [data1],
415+
expectedIsGroupConversation: false,
416+
expectedTitle: 'Before',
417+
expectedTagComponent: expectedTagComponent);
418+
419+
otherUser.fullName = 'After';
420+
final message2 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
421+
final data2 = messageFcmMessage(message2);
422+
423+
await receiveFcmMessage(async, data2);
424+
checkNotification(data2,
425+
messageStyleMessages: [data1, data2],
426+
expectedIsGroupConversation: false,
427+
expectedTitle: 'After',
428+
expectedTagComponent: expectedTagComponent);
429+
})));
430+
431+
test('1:1 DM: conversation stays same when sender email changes', () => runWithHttpClient(() => awaitFakeAsync((async) async {
432+
await init();
433+
final otherUser = eg.user(email: '[email protected]');
434+
final message1 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
435+
final data1 = messageFcmMessage(message1);
436+
437+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
438+
439+
await receiveFcmMessage(async, data1);
440+
checkNotification(data1,
441+
messageStyleMessages: [data1],
442+
expectedIsGroupConversation: false,
443+
expectedTitle: otherUser.fullName,
444+
expectedTagComponent: expectedTagComponent);
445+
446+
otherUser.email = '[email protected]';
447+
final message2 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
448+
final data2 = messageFcmMessage(message2);
449+
450+
await receiveFcmMessage(async, data2);
451+
checkNotification(data2,
452+
messageStyleMessages: [data1, data2],
453+
expectedIsGroupConversation: false,
454+
expectedTitle: otherUser.fullName,
455+
expectedTagComponent: expectedTagComponent);
456+
})));
457+
320458
test('1:1 DM: sender avatar loading fails, remote error', () => runWithHttpClient(
321459
() => awaitFakeAsync((async) async {
322460
await init();

0 commit comments

Comments
 (0)