Skip to content

Commit 76d1404

Browse files
gnpricesm-sayedi
authored andcommitted
recent_senders test [nfc]: Pull out a checkHandleMessages helper
1 parent 2ff2406 commit 76d1404

File tree

1 file changed

+41
-104
lines changed

1 file changed

+41
-104
lines changed

test/model/recent_senders_test.dart

Lines changed: 41 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -67,193 +67,130 @@ void main() {
6767
}
6868
}
6969

70+
void checkHandleMessages(List<Message> oldMessages, List<Message> newMessages) {
71+
setupModel(oldMessages);
72+
model.handleMessages(newMessages);
73+
final expectedMessages = [...oldMessages, ...newMessages]
74+
..removeWhere((m) => m is! StreamMessage)
75+
..sort((m1, m2) => m1.id.compareTo(m2.id));
76+
checkMatchesMessages(model, expectedMessages);
77+
}
78+
7079
group('single tracker', () {
7180
test('batch goes before the existing messages', () {
72-
final existingMessages = [
81+
checkHandleMessages([
7382
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
7483
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
75-
];
76-
setupModel(existingMessages);
77-
78-
final messages = [
84+
], [
7985
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
8086
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
81-
];
82-
model.handleMessages(messages);
83-
84-
checkMatchesMessages(model,
85-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
87+
]);
8688
});
8789

8890
test('batch goes after the existing messages', () {
89-
final existingMessages = [
91+
checkHandleMessages([
9092
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
9193
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
92-
];
93-
setupModel(existingMessages);
94-
95-
final messages = [
94+
], [
9695
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 500),
9796
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 600),
98-
];
99-
model.handleMessages(messages);
100-
101-
checkMatchesMessages(model,
102-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
97+
]);
10398
});
10499

105100
test('batch is interspersed among the existing messages', () {
106-
final existingMessages = [
101+
checkHandleMessages([
107102
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
108103
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
109-
];
110-
setupModel(existingMessages);
111-
112-
final messages = [
104+
], [
113105
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
114106
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
115107
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 500),
116-
];
117-
model.handleMessages(messages);
118-
119-
checkMatchesMessages(model,
120-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
108+
]);
121109
});
122110

123111
test('batch contains some of already-existing messages', () {
124-
final existingMessages = [
112+
checkHandleMessages([
125113
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
126114
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
127115
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
128-
];
129-
setupModel(existingMessages);
130-
131-
final messages = [
116+
], [
132117
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
133118
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
134119
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
135120
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 500),
136-
];
137-
model.handleMessages(messages);
138-
139-
checkMatchesMessages(model,
140-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
121+
]);
141122
});
142123

143124
test('batch with both DM and stream messages -> ignores DM, processes stream messages', () {
144-
final existingMessages = [
125+
checkHandleMessages([
145126
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
146127
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
147-
];
148-
setupModel(existingMessages);
149-
150-
final dmMessage = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], id: 400);
151-
final messages = [
128+
], [
152129
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
153-
dmMessage,
130+
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], id: 400),
154131
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 500),
155-
];
156-
model.handleMessages(messages);
157-
158-
checkMatchesMessages(model,
159-
[...existingMessages, ...messages..remove(dmMessage)]..sort((m1, m2) => m1.id.compareTo(m2.id)));
132+
]);
160133
});
161134
});
162135

163136
group('multiple trackers', () {
164137
test('batch goes before the existing messages', () {
165-
final existingMessages = [
138+
checkHandleMessages([
166139
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
167140
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 500),
168141
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 600),
169-
];
170-
setupModel(existingMessages);
171-
172-
final messages = [
142+
], [
173143
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
174144
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
175-
];
176-
model.handleMessages(messages);
177-
178-
checkMatchesMessages(model,
179-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
145+
]);
180146
});
181147

182148
test('batch goes after the existing messages', () {
183-
final existingMessages = [
149+
checkHandleMessages([
184150
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
185151
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 600),
186-
];
187-
setupModel(existingMessages);
188-
189-
final messages = [
152+
], [
190153
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 400),
191154
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 500),
192155
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 700),
193-
];
194-
model.handleMessages(messages);
195-
196-
checkMatchesMessages(model,
197-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
156+
]);
198157
});
199158

200159
test('batch is interspersed among the existing messages', () {
201-
final existingMessages = [
160+
checkHandleMessages([
202161
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
203162
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
204163
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 500),
205164
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 700),
206-
];
207-
setupModel(existingMessages);
208-
209-
final messages = [
165+
], [
210166
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
211167
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
212168
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 600),
213169
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 800),
214-
];
215-
model.handleMessages(messages);
216-
217-
checkMatchesMessages(model,
218-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
170+
]);
219171
});
220172

221173
test('batch contains some of already-existing messages', () {
222-
final existingMessages = [
174+
checkHandleMessages([
223175
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
224176
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 300),
225177
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
226-
];
227-
setupModel(existingMessages);
228-
229-
final messages = [
178+
], [
230179
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 200),
231180
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
232181
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 500),
233-
];
234-
model.handleMessages(messages);
235-
236-
checkMatchesMessages(model,
237-
[...existingMessages, ...messages]..sort((m1, m2) => m1.id.compareTo(m2.id)));
182+
]);
238183
});
239184

240185
test('batch with both DM and stream messages -> ignores DM, processes stream messages', () {
241-
final existingMessages = [
186+
checkHandleMessages([
242187
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 100),
243188
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 200),
244-
];
245-
setupModel(existingMessages);
246-
247-
final dmMessage = eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], id: 200);
248-
final messages = [
189+
], [
249190
eg.streamMessage(stream: stream1, topic: 'a', sender: user10, id: 300),
250-
dmMessage,
191+
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], id: 200),
251192
eg.streamMessage(stream: stream1, topic: 'b', sender: user10, id: 400),
252-
];
253-
model.handleMessages(messages);
254-
255-
checkMatchesMessages(model,
256-
[...existingMessages, ...messages..remove(dmMessage)]..sort((m1, m2) => m1.id.compareTo(m2.id)));
193+
]);
257194
});
258195
});
259196
});

0 commit comments

Comments
 (0)