Skip to content

Commit a1ca6f5

Browse files
notif test: Add more tests for messaging style notif
Add more tests for Android messaging style notif implementation, listed here: #718 (review)
1 parent f5adec4 commit a1ca6f5

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
@@ -288,6 +288,66 @@ void main() {
288288
expectedTagComponent: expectedTagComponent);
289289
})));
290290

291+
test('stream message: multiple messages, different topics', () => runWithHttpClient(() => awaitFakeAsync((async) async {
292+
await init();
293+
final stream = eg.stream();
294+
const topicA = 'topic A';
295+
const topicB = 'topic B';
296+
final message1 = eg.streamMessage(topic: topicA, stream: stream);
297+
final data1 = messageFcmMessage(message1, streamName: stream.name);
298+
final message2 = eg.streamMessage(topic: topicB, stream: stream);
299+
final data2 = messageFcmMessage(message2, streamName: stream.name);
300+
final message3 = eg.streamMessage(topic: topicA, stream: stream);
301+
final data3 = messageFcmMessage(message3, streamName: stream.name);
302+
303+
await receiveFcmMessage(async, data1);
304+
checkNotification(data1,
305+
messageStyleMessages: [data1],
306+
expectedIsGroupConversation: true,
307+
expectedTitle: '#${stream.name} > $topicA',
308+
expectedTagComponent: 'stream:${stream.streamId}:$topicA');
309+
310+
await receiveFcmMessage(async, data2);
311+
checkNotification(data2,
312+
messageStyleMessages: [data2],
313+
expectedIsGroupConversation: true,
314+
expectedTitle: '#${stream.name} > $topicB',
315+
expectedTagComponent: 'stream:${stream.streamId}:$topicB');
316+
317+
await receiveFcmMessage(async, data3);
318+
checkNotification(data3,
319+
messageStyleMessages: [data1, data3],
320+
expectedIsGroupConversation: true,
321+
expectedTitle: '#${stream.name} > $topicA',
322+
expectedTagComponent: 'stream:${stream.streamId}:$topicA');
323+
})));
324+
325+
test('stream message: conversation stays same when stream is renamed', () => runWithHttpClient(() => awaitFakeAsync((async) async {
326+
await init();
327+
var stream = eg.stream(streamId: 1, name: 'Before');
328+
const topic = 'topic';
329+
final message1 = eg.streamMessage(topic: topic, stream: stream);
330+
final data1 = messageFcmMessage(message1, streamName: stream.name);
331+
332+
await receiveFcmMessage(async, data1);
333+
checkNotification(data1,
334+
messageStyleMessages: [data1],
335+
expectedIsGroupConversation: true,
336+
expectedTitle: '#Before > $topic',
337+
expectedTagComponent: 'stream:${stream.streamId}:$topic');
338+
339+
stream = eg.stream(streamId: 1, name: 'After');
340+
final message2 = eg.streamMessage(topic: topic, stream: stream);
341+
final data2 = messageFcmMessage(message2, streamName: stream.name);
342+
343+
await receiveFcmMessage(async, data2);
344+
checkNotification(data2,
345+
messageStyleMessages: [data1, data2],
346+
expectedIsGroupConversation: true,
347+
expectedTitle: '#After > $topic',
348+
expectedTagComponent: 'stream:${stream.streamId}:$topic');
349+
})));
350+
291351
test('stream message: stream name omitted', () => runWithHttpClient(() => awaitFakeAsync((async) async {
292352
await init();
293353
final stream = eg.stream();
@@ -317,6 +377,30 @@ void main() {
317377
expectedTagComponent: 'dm:${message.allRecipientIds.join(",")}');
318378
})));
319379

380+
test('group DM: title updates with latest sender', () => runWithHttpClient(() => awaitFakeAsync((async) async {
381+
await init();
382+
final message1 = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser, eg.thirdUser]);
383+
final data1 = messageFcmMessage(message1);
384+
final message2 = eg.dmMessage(from: eg.thirdUser, to: [eg.selfUser, eg.otherUser]);
385+
final data2 = messageFcmMessage(message2);
386+
387+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
388+
389+
await receiveFcmMessage(async, data1);
390+
checkNotification(data1,
391+
messageStyleMessages: [data1],
392+
expectedIsGroupConversation: true,
393+
expectedTitle: "${eg.otherUser.fullName} to you and 1 other",
394+
expectedTagComponent: expectedTagComponent);
395+
396+
await receiveFcmMessage(async, data2);
397+
checkNotification(data2,
398+
messageStyleMessages: [data1, data2],
399+
expectedIsGroupConversation: true,
400+
expectedTitle: "${eg.thirdUser.fullName} to you and 1 other",
401+
expectedTagComponent: expectedTagComponent);
402+
})));
403+
320404
test('1:1 DM', () => runWithHttpClient(() => awaitFakeAsync((async) async {
321405
await init();
322406
final message = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser]);
@@ -326,6 +410,60 @@ void main() {
326410
expectedTagComponent: 'dm:${message.allRecipientIds.join(",")}');
327411
})));
328412

413+
test('1:1 DM: title updates when sender name changes', () => runWithHttpClient(() => awaitFakeAsync((async) async {
414+
await init();
415+
final otherUser = eg.user(fullName: 'Before');
416+
final message1 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
417+
final data1 = messageFcmMessage(message1);
418+
419+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
420+
421+
await receiveFcmMessage(async, data1);
422+
checkNotification(data1,
423+
messageStyleMessages: [data1],
424+
expectedIsGroupConversation: false,
425+
expectedTitle: 'Before',
426+
expectedTagComponent: expectedTagComponent);
427+
428+
otherUser.fullName = 'After';
429+
final message2 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
430+
final data2 = messageFcmMessage(message2);
431+
432+
await receiveFcmMessage(async, data2);
433+
checkNotification(data2,
434+
messageStyleMessages: [data1, data2],
435+
expectedIsGroupConversation: false,
436+
expectedTitle: 'After',
437+
expectedTagComponent: expectedTagComponent);
438+
})));
439+
440+
test('1:1 DM: conversation stays same when sender email changes', () => runWithHttpClient(() => awaitFakeAsync((async) async {
441+
await init();
442+
final otherUser = eg.user(email: 'before@example.com');
443+
final message1 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
444+
final data1 = messageFcmMessage(message1);
445+
446+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
447+
448+
await receiveFcmMessage(async, data1);
449+
checkNotification(data1,
450+
messageStyleMessages: [data1],
451+
expectedIsGroupConversation: false,
452+
expectedTitle: otherUser.fullName,
453+
expectedTagComponent: expectedTagComponent);
454+
455+
otherUser.email = 'before@example.com';
456+
final message2 = eg.dmMessage(from: otherUser, to: [eg.selfUser]);
457+
final data2 = messageFcmMessage(message2);
458+
459+
await receiveFcmMessage(async, data2);
460+
checkNotification(data2,
461+
messageStyleMessages: [data1, data2],
462+
expectedIsGroupConversation: false,
463+
expectedTitle: otherUser.fullName,
464+
expectedTagComponent: expectedTagComponent);
465+
})));
466+
329467
test('1:1 DM: sender avatar loading fails, remote error', () => runWithHttpClient(
330468
() => awaitFakeAsync((async) async {
331469
await init();

0 commit comments

Comments
 (0)