Skip to content

Commit a4d2a7b

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

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
@@ -291,6 +291,66 @@ void main() {
291291
expectedTagComponent: expectedTagComponent);
292292
})));
293293

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

383+
test('group DM: title updates with latest sender', () => runWithHttpClient(() => awaitFakeAsync((async) async {
384+
await init();
385+
final message1 = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser, eg.thirdUser]);
386+
final data1 = messageFcmMessage(message1);
387+
final message2 = eg.dmMessage(from: eg.thirdUser, to: [eg.selfUser, eg.otherUser]);
388+
final data2 = messageFcmMessage(message2);
389+
390+
final expectedTagComponent = 'dm:${message1.allRecipientIds.join(",")}';
391+
392+
await receiveFcmMessage(async, data1);
393+
checkNotification(data1,
394+
messageStyleMessages: [data1],
395+
expectedIsGroupConversation: true,
396+
expectedTitle: "${eg.otherUser.fullName} to you and 1 other",
397+
expectedTagComponent: expectedTagComponent);
398+
399+
await receiveFcmMessage(async, data2);
400+
checkNotification(data2,
401+
messageStyleMessages: [data1, data2],
402+
expectedIsGroupConversation: true,
403+
expectedTitle: "${eg.thirdUser.fullName} to you and 1 other",
404+
expectedTagComponent: expectedTagComponent);
405+
})));
406+
323407
test('1:1 DM', () => runWithHttpClient(() => awaitFakeAsync((async) async {
324408
await init();
325409
final message = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser]);
@@ -329,6 +413,60 @@ void main() {
329413
expectedTagComponent: 'dm:${message.allRecipientIds.join(",")}');
330414
})));
331415

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

0 commit comments

Comments
 (0)