Skip to content

Commit 625389a

Browse files
gnpricechrisbobbe
authored andcommitted
msglist test [nfc]: Make prepare helper async
This is the first in a series of steps toward making [PerAccountStore.handleEvent] an async method. We'll need that in turn in order to let it start saving changes to disk when applicable, like for #458, and having both it and its caller, [UpdateMachine.poll], wait for the result rather than barreling ahead to make other changes concurrently. This change comes first because when we make `handleEvent` async, we'll want to make sure all its call sites properly wait for it to finish; and when that requires changing the caller to an async method, we'll want to do the same for *its* call sites, recursively. To keep the changes manageable to read and review, we'll make separate commits for each method, except local helpers with only a handful of call sites. The callers have to go before the callees in order to keep the commits coherent, so we start with this transitive caller.
1 parent 9ea0584 commit 625389a

File tree

1 file changed

+32
-32
lines changed

1 file changed

+32
-32
lines changed

test/model/message_list_test.dart

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void main() async {
3636
void checkNotifiedOnce() => checkNotified(count: 1);
3737

3838
/// Initialize [model] and the rest of the test state.
39-
void prepare({Narrow narrow = const AllMessagesNarrow()}) {
39+
Future<void> prepare({Narrow narrow = const AllMessagesNarrow()}) async {
4040
final stream = eg.stream();
4141
subscription = eg.subscription(stream);
4242
store = eg.store()
@@ -87,7 +87,7 @@ void main() async {
8787

8888
test('fetchInitial', () async {
8989
const narrow = AllMessagesNarrow();
90-
prepare(narrow: narrow);
90+
await prepare(narrow: narrow);
9191
connection.prepare(json: newestResult(
9292
foundOldest: false,
9393
messages: List.generate(kMessageListFetchBatchSize,
@@ -112,7 +112,7 @@ void main() async {
112112
});
113113

114114
test('fetchInitial, short history', () async {
115-
prepare();
115+
await prepare();
116116
connection.prepare(json: newestResult(
117117
foundOldest: true,
118118
messages: List.generate(30, (i) => eg.streamMessage()),
@@ -125,7 +125,7 @@ void main() async {
125125
});
126126

127127
test('fetchInitial, no messages found', () async {
128-
prepare();
128+
await prepare();
129129
connection.prepare(json: newestResult(
130130
foundOldest: true,
131131
messages: [],
@@ -140,7 +140,7 @@ void main() async {
140140

141141
test('fetchOlder', () async {
142142
const narrow = AllMessagesNarrow();
143-
prepare(narrow: narrow);
143+
await prepare(narrow: narrow);
144144
await prepareMessages(foundOldest: false,
145145
messages: List.generate(100, (i) => eg.streamMessage(id: 1000 + i)));
146146

@@ -168,7 +168,7 @@ void main() async {
168168

169169
test('fetchOlder nop when already fetching', () async {
170170
const narrow = AllMessagesNarrow();
171-
prepare(narrow: narrow);
171+
await prepare(narrow: narrow);
172172
await prepareMessages(foundOldest: false,
173173
messages: List.generate(100, (i) => eg.streamMessage(id: 1000 + i)));
174174

@@ -197,7 +197,7 @@ void main() async {
197197
});
198198

199199
test('fetchOlder nop when already haveOldest true', () async {
200-
prepare(narrow: const AllMessagesNarrow());
200+
await prepare(narrow: const AllMessagesNarrow());
201201
await prepareMessages(foundOldest: true, messages:
202202
List.generate(30, (i) => eg.streamMessage()));
203203
check(model)
@@ -216,7 +216,7 @@ void main() async {
216216

217217
test('fetchOlder handles servers not understanding includeAnchor', () async {
218218
const narrow = AllMessagesNarrow();
219-
prepare(narrow: narrow);
219+
await prepare(narrow: narrow);
220220
await prepareMessages(foundOldest: false,
221221
messages: List.generate(100, (i) => eg.streamMessage(id: 1000 + i)));
222222

@@ -234,7 +234,7 @@ void main() async {
234234

235235
test('maybeAddMessage', () async {
236236
final stream = eg.stream();
237-
prepare(narrow: StreamNarrow(stream.streamId));
237+
await prepare(narrow: StreamNarrow(stream.streamId));
238238
await prepareMessages(foundOldest: true, messages:
239239
List.generate(30, (i) => eg.streamMessage(stream: stream)));
240240

@@ -246,7 +246,7 @@ void main() async {
246246

247247
test('maybeAddMessage, not in narrow', () async {
248248
final stream = eg.stream(streamId: 123);
249-
prepare(narrow: StreamNarrow(stream.streamId));
249+
await prepare(narrow: StreamNarrow(stream.streamId));
250250
await prepareMessages(foundOldest: true, messages:
251251
List.generate(30, (i) => eg.streamMessage(stream: stream)));
252252

@@ -259,7 +259,7 @@ void main() async {
259259

260260
test('maybeAddMessage, before fetch', () async {
261261
final stream = eg.stream();
262-
prepare(narrow: StreamNarrow(stream.streamId));
262+
await prepare(narrow: StreamNarrow(stream.streamId));
263263
model.maybeAddMessage(eg.streamMessage(stream: stream));
264264
checkNotNotified();
265265
check(model).fetched.isFalse();
@@ -276,7 +276,7 @@ void main() async {
276276
editTimestamp: 99999,
277277
isMeMessage: true,
278278
);
279-
prepare();
279+
await prepare();
280280
await prepareMessages(foundOldest: true, messages: [originalMessage]);
281281

282282
final message = model.messages.single;
@@ -303,7 +303,7 @@ void main() async {
303303
messageId: originalMessage.id + 1,
304304
renderedContent: "<p>Hello, edited</p>",
305305
);
306-
prepare();
306+
await prepare();
307307
await prepareMessages(foundOldest: true, messages: [originalMessage]);
308308

309309
model.maybeUpdateMessage(updateEvent);
@@ -324,7 +324,7 @@ void main() async {
324324
renderingOnly: legacy ? null : true,
325325
userId: null,
326326
);
327-
prepare();
327+
await prepare();
328328
await prepareMessages(foundOldest: true, messages: [originalMessage]);
329329
final message = model.messages.single;
330330

@@ -362,7 +362,7 @@ void main() async {
362362

363363
test('add reaction', () async {
364364
final originalMessage = eg.streamMessage(reactions: []);
365-
prepare();
365+
await prepare();
366366
await prepareMessages(foundOldest: true, messages: [originalMessage]);
367367
final message = model.messages.single;
368368

@@ -376,7 +376,7 @@ void main() async {
376376

377377
test('add reaction; message is not in list', () async {
378378
final someMessage = eg.streamMessage(reactions: []);
379-
prepare();
379+
await prepare();
380380
await prepareMessages(foundOldest: true, messages: [someMessage]);
381381
model.maybeUpdateMessageReactions(
382382
mkEvent(eg.unicodeEmojiReaction, ReactionOp.add, 1000));
@@ -405,7 +405,7 @@ void main() async {
405405

406406
final originalMessage = eg.streamMessage(
407407
reactions: [reaction2, reaction3, reaction4]);
408-
prepare();
408+
await prepare();
409409
await prepareMessages(foundOldest: true, messages: [originalMessage]);
410410
final message = model.messages.single;
411411

@@ -419,7 +419,7 @@ void main() async {
419419

420420
test('remove reaction; message is not in list', () async {
421421
final someMessage = eg.streamMessage(reactions: [eg.unicodeEmojiReaction]);
422-
prepare();
422+
await prepare();
423423
await prepareMessages(foundOldest: true, messages: [someMessage]);
424424
model.maybeUpdateMessageReactions(
425425
mkEvent(eg.unicodeEmojiReaction, ReactionOp.remove, 1000));
@@ -447,7 +447,7 @@ void main() async {
447447

448448
group('add flag', () {
449449
test('not in list', () async {
450-
prepare();
450+
await prepare();
451451
final message = eg.streamMessage(flags: []);
452452
await prepareMessages(foundOldest: true, messages: [message]);
453453
model.maybeUpdateMessageFlags(mkAddEvent(MessageFlag.read, [2]));
@@ -456,7 +456,7 @@ void main() async {
456456
});
457457

458458
test('affected message, unaffected message, absent message', () async {
459-
prepare();
459+
await prepare();
460460
final message1 = eg.streamMessage(flags: []);
461461
final message2 = eg.streamMessage(flags: []);
462462
await prepareMessages(foundOldest: true, messages: [message1, message2]);
@@ -468,7 +468,7 @@ void main() async {
468468
});
469469

470470
test('all: true, list non-empty', () async {
471-
prepare();
471+
await prepare();
472472
final message1 = eg.streamMessage(flags: []);
473473
final message2 = eg.streamMessage(flags: []);
474474
await prepareMessages(foundOldest: true, messages: [message1, message2]);
@@ -480,15 +480,15 @@ void main() async {
480480
});
481481

482482
test('all: true, list empty', () async {
483-
prepare();
483+
await prepare();
484484
await prepareMessages(foundOldest: true, messages: []);
485485
model.maybeUpdateMessageFlags(mkAddEvent(MessageFlag.read, [], all: true));
486486
checkNotNotified();
487487
});
488488

489489
test('other flags not clobbered', () async {
490490
final message = eg.streamMessage(flags: [MessageFlag.starred]);
491-
prepare();
491+
await prepare();
492492
await prepareMessages(foundOldest: true, messages: [message]);
493493
model.maybeUpdateMessageFlags(mkAddEvent(MessageFlag.read, [message.id]));
494494
checkNotifiedOnce();
@@ -498,7 +498,7 @@ void main() async {
498498

499499
group('remove flag', () {
500500
test('not in list', () async {
501-
prepare();
501+
await prepare();
502502
final message = eg.streamMessage(flags: [MessageFlag.read]);
503503
await prepareMessages(foundOldest: true, messages: [message]);
504504
model.maybeUpdateMessageFlags(mkAddEvent(MessageFlag.read, [2]));
@@ -507,7 +507,7 @@ void main() async {
507507
});
508508

509509
test('affected message, unaffected message, absent message', () async {
510-
prepare();
510+
await prepare();
511511
final message1 = eg.streamMessage(flags: [MessageFlag.read]);
512512
final message2 = eg.streamMessage(flags: [MessageFlag.read]);
513513
final message3 = eg.streamMessage(flags: [MessageFlag.read]);
@@ -521,7 +521,7 @@ void main() async {
521521

522522
test('other flags not affected', () async {
523523
final message = eg.streamMessage(flags: [MessageFlag.starred, MessageFlag.read]);
524-
prepare();
524+
await prepare();
525525
await prepareMessages(foundOldest: true, messages: [message]);
526526
model.maybeUpdateMessageFlags(mkRemoveEvent(MessageFlag.read, [message]));
527527
checkNotifiedOnce();
@@ -532,7 +532,7 @@ void main() async {
532532

533533
test('reassemble', () async {
534534
final stream = eg.stream();
535-
prepare(narrow: StreamNarrow(stream.streamId));
535+
await prepare(narrow: StreamNarrow(stream.streamId));
536536
await prepareMessages(foundOldest: true, messages:
537537
List.generate(30, (i) => eg.streamMessage(stream: stream)));
538538
model.maybeAddMessage(eg.streamMessage(stream: stream));
@@ -557,7 +557,7 @@ void main() async {
557557
test('in AllMessagesNarrow', () async {
558558
final stream1 = eg.stream(streamId: 1, name: 'stream 1');
559559
final stream2 = eg.stream(streamId: 2, name: 'stream 2');
560-
prepare(narrow: const AllMessagesNarrow());
560+
await prepare(narrow: const AllMessagesNarrow());
561561
store.addStreams([stream1, stream2]);
562562
store.addSubscription(eg.subscription(stream1));
563563
store.addUserTopic(stream1, 'B', UserTopicVisibilityPolicy.muted);
@@ -614,7 +614,7 @@ void main() async {
614614

615615
test('in StreamNarrow', () async {
616616
final stream = eg.stream(streamId: 1, name: 'stream 1');
617-
prepare(narrow: StreamNarrow(stream.streamId));
617+
await prepare(narrow: StreamNarrow(stream.streamId));
618618
store.addStream(stream);
619619
store.addSubscription(eg.subscription(stream, isMuted: true));
620620
store.addUserTopic(stream, 'A', UserTopicVisibilityPolicy.unmuted);
@@ -658,7 +658,7 @@ void main() async {
658658

659659
test('in TopicNarrow', () async {
660660
final stream = eg.stream(streamId: 1, name: 'stream 1');
661-
prepare(narrow: TopicNarrow(stream.streamId, 'A'));
661+
await prepare(narrow: TopicNarrow(stream.streamId, 'A'));
662662
store.addStream(stream);
663663
store.addSubscription(eg.subscription(stream, isMuted: true));
664664
store.addUserTopic(stream, 'A', UserTopicVisibilityPolicy.muted);
@@ -709,7 +709,7 @@ void main() async {
709709
eg.dmMessage(id: id, from: eg.selfUser, to: [], timestamp: timestamp);
710710

711711
// First, test fetchInitial, where some headers are needed and others not.
712-
prepare();
712+
await prepare();
713713
connection.prepare(json: newestResult(
714714
foundOldest: false,
715715
messages: [streamMessage(10), streamMessage(11), dmMessage(12)],
@@ -791,7 +791,7 @@ void main() async {
791791
eg.dmMessage(id: id, from: sender, timestamp: timestamp,
792792
to: [sender.userId == eg.selfUser.userId ? eg.otherUser : eg.selfUser]);
793793

794-
prepare();
794+
await prepare();
795795
await prepareMessages(foundOldest: true, messages: [
796796
streamMessage(1, t1, eg.selfUser), // first message, so show sender
797797
streamMessage(2, t1, eg.selfUser), // hide sender

0 commit comments

Comments
 (0)