Skip to content

Commit d23c9dd

Browse files
committed
recent_senders test: Test handleMessages implementation
This replaces the "multiple trackers" group with test cases that are written to exercise the various scenarios relevant to the logic in RecentSenders.handleMessages. See also discussion here: zulip#692 (comment)
1 parent 665fec3 commit d23c9dd

File tree

1 file changed

+29
-63
lines changed

1 file changed

+29
-63
lines changed

test/model/recent_senders_test.dart

+29-63
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ void main() {
5858
group('RecentSenders.handleMessages', () {
5959
late RecentSenders model;
6060
final stream1 = eg.stream(streamId: 1);
61+
final stream2 = eg.stream(streamId: 2);
6162
final user10 = eg.user(userId: 10);
63+
final user20 = eg.user(userId: 20);
6264

6365
void setupModel(List<Message> messages) {
6466
model = RecentSenders();
@@ -104,75 +106,39 @@ void main() {
104106
});
105107

106108
test('batch with both DM and stream messages -> ignores DM, processes stream messages', () {
107-
checkHandleMessages([
108-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
109-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
110-
], [
111-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
112-
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], id: 200),
113-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
109+
checkHandleMessages([], [
110+
eg.streamMessage(stream: stream1, topic: 'a', sender: user10),
111+
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser]),
112+
eg.streamMessage(stream: stream1, topic: 'a', sender: user10),
114113
]);
115114
});
116115

117-
group('multiple trackers', () {
118-
test('batch goes before the existing messages', () {
119-
checkHandleMessages([
120-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
121-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 500),
122-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 600),
123-
], [
124-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
125-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
126-
]);
127-
});
128-
129-
test('batch goes after the existing messages', () {
130-
checkHandleMessages([
131-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
132-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 600),
133-
], [
134-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
135-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 500),
136-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 700),
137-
]);
138-
});
116+
test('add new sender', () {
117+
checkHandleMessages(
118+
[eg.streamMessage(stream: stream1, topic: 'a', sender: user10)],
119+
[eg.streamMessage(stream: stream1, topic: 'a', sender: user20)]);
120+
});
139121

140-
test('batch is interspersed among the existing messages', () {
141-
checkHandleMessages([
142-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
143-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
144-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 500),
145-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 700),
146-
], [
147-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
148-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
149-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 600),
150-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 800),
151-
]);
152-
});
122+
test('add new topic', () {
123+
checkHandleMessages(
124+
[eg.streamMessage(stream: stream1, topic: 'a', sender: user10)],
125+
[eg.streamMessage(stream: stream1, topic: 'b', sender: user10)]);
126+
});
153127

154-
test('batch contains some of already-existing messages', () {
155-
checkHandleMessages([
156-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
157-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 300),
158-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
159-
], [
160-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
161-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
162-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 500),
163-
]);
164-
});
128+
test('add new stream', () {
129+
checkHandleMessages(
130+
[eg.streamMessage(stream: stream1, topic: 'a', sender: user10)],
131+
[eg.streamMessage(stream: stream2, topic: 'a', sender: user10)]);
132+
});
165133

166-
test('batch with both DM and stream messages -> ignores DM, processes stream messages', () {
167-
checkHandleMessages([
168-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
169-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 200),
170-
], [
171-
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
172-
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], id: 200),
173-
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
174-
]);
175-
});
134+
test('multiple conversations and senders interspersed', () {
135+
checkHandleMessages([], [
136+
eg.streamMessage(stream: stream1, topic: 'a', sender: user10),
137+
eg.streamMessage(stream: stream1, topic: 'b', sender: user10),
138+
eg.streamMessage(stream: stream2, topic: 'a', sender: user10),
139+
eg.streamMessage(stream: stream1, topic: 'a', sender: user20),
140+
eg.streamMessage(stream: stream1, topic: 'a', sender: user10),
141+
]);
176142
});
177143
});
178144

0 commit comments

Comments
 (0)