Skip to content

Commit 5463328

Browse files
committed
message test [nfc]: Move UpdateMessageEvent edit tests from msglist tests
1 parent 2ac4ef9 commit 5463328

File tree

2 files changed

+83
-82
lines changed

2 files changed

+83
-82
lines changed

test/model/message_list_test.dart

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -297,88 +297,6 @@ void main() {
297297
});
298298
});
299299

300-
group('UpdateMessageEvent', () {
301-
test('update a message', () async {
302-
final originalMessage = eg.streamMessage(
303-
content: "<p>Hello, world</p>");
304-
final updateEvent = eg.updateMessageEditEvent(originalMessage,
305-
flags: [MessageFlag.starred],
306-
renderedContent: "<p>Hello, edited</p>",
307-
editTimestamp: 99999,
308-
isMeMessage: true,
309-
);
310-
await prepare();
311-
await prepareMessages(foundOldest: true, messages: [originalMessage]);
312-
313-
final message = model.messages.single;
314-
check(message)
315-
..content.not((it) => it.equals(updateEvent.renderedContent!))
316-
..lastEditTimestamp.isNull()
317-
..flags.not((it) => it.deepEquals(updateEvent.flags))
318-
..isMeMessage.not((it) => it.equals(updateEvent.isMeMessage!));
319-
320-
await store.handleEvent(updateEvent);
321-
checkNotifiedOnce();
322-
check(model).messages.single
323-
..identicalTo(message)
324-
..content.equals(updateEvent.renderedContent!)
325-
..lastEditTimestamp.equals(updateEvent.editTimestamp)
326-
..flags.equals(updateEvent.flags)
327-
..isMeMessage.equals(updateEvent.isMeMessage!);
328-
});
329-
330-
test('ignore when message not present', () async {
331-
final originalMessage = eg.streamMessage(
332-
content: "<p>Hello, world</p>");
333-
final updateEvent = eg.updateMessageEditEvent(originalMessage,
334-
messageId: originalMessage.id + 1,
335-
renderedContent: "<p>Hello, edited</p>",
336-
);
337-
await prepare();
338-
await prepareMessages(foundOldest: true, messages: [originalMessage]);
339-
340-
await store.handleEvent(updateEvent);
341-
checkNotNotified();
342-
check(model).messages.single
343-
..content.equals(originalMessage.content)
344-
..content.not((it) => it.equals(updateEvent.renderedContent!));
345-
});
346-
347-
// TODO(server-5): Cut legacy case for rendering-only message update
348-
Future<void> checkRenderingOnly({required bool legacy}) async {
349-
final originalMessage = eg.streamMessage(
350-
lastEditTimestamp: 78492,
351-
content: "<p>Hello, world</p>");
352-
final updateEvent = eg.updateMessageEditEvent(originalMessage,
353-
renderedContent: "<p>Hello, world</p> <div>Some link preview</div>",
354-
editTimestamp: 99999,
355-
renderingOnly: legacy ? null : true,
356-
userId: null,
357-
);
358-
await prepare();
359-
await prepareMessages(foundOldest: true, messages: [originalMessage]);
360-
final message = model.messages.single;
361-
362-
await store.handleEvent(updateEvent);
363-
checkNotifiedOnce();
364-
check(model).messages.single
365-
..identicalTo(message)
366-
// Content is updated...
367-
..content.equals(updateEvent.renderedContent!)
368-
// ... edit timestamp is not.
369-
..lastEditTimestamp.equals(originalMessage.lastEditTimestamp)
370-
..lastEditTimestamp.not((it) => it.equals(updateEvent.editTimestamp));
371-
}
372-
373-
test('rendering-only update does not change timestamp', () async {
374-
await checkRenderingOnly(legacy: false);
375-
});
376-
377-
test('rendering-only update does not change timestamp (for old server versions)', () async {
378-
await checkRenderingOnly(legacy: true);
379-
});
380-
});
381-
382300
group('maybeUpdateMessageFlags', () {
383301
UpdateMessageFlagsAddEvent mkAddEvent(
384302
MessageFlag flag,

test/model/message_test.dart

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import '../api/model/model_checks.dart';
1111
import '../example_data.dart' as eg;
1212
import '../stdlib_checks.dart';
1313
import 'message_list_test.dart';
14+
import 'store_checks.dart';
1415
import 'test_store.dart';
1516

1617
void main() {
@@ -153,6 +154,88 @@ void main() {
153154
});
154155
});
155156

157+
group('handleUpdateMessageEvent', () {
158+
test('update a message', () async {
159+
final originalMessage = eg.streamMessage(
160+
content: "<p>Hello, world</p>");
161+
final updateEvent = eg.updateMessageEditEvent(originalMessage,
162+
flags: [MessageFlag.starred],
163+
renderedContent: "<p>Hello, edited</p>",
164+
editTimestamp: 99999,
165+
isMeMessage: true,
166+
);
167+
prepare();
168+
await prepareMessages([originalMessage]);
169+
170+
final message = store.messages.values.single;
171+
check(message)
172+
..content.not((it) => it.equals(updateEvent.renderedContent!))
173+
..lastEditTimestamp.isNull()
174+
..flags.not((it) => it.deepEquals(updateEvent.flags))
175+
..isMeMessage.not((it) => it.equals(updateEvent.isMeMessage!));
176+
177+
await store.handleEvent(updateEvent);
178+
checkNotifiedOnce();
179+
check(store).messages.values.single
180+
..identicalTo(message)
181+
..content.equals(updateEvent.renderedContent!)
182+
..lastEditTimestamp.equals(updateEvent.editTimestamp)
183+
..flags.equals(updateEvent.flags)
184+
..isMeMessage.equals(updateEvent.isMeMessage!);
185+
});
186+
187+
test('ignore when message unknown', () async {
188+
final originalMessage = eg.streamMessage(
189+
content: "<p>Hello, world</p>");
190+
final updateEvent = eg.updateMessageEditEvent(originalMessage,
191+
messageId: originalMessage.id + 1,
192+
renderedContent: "<p>Hello, edited</p>",
193+
);
194+
prepare();
195+
await prepareMessages([originalMessage]);
196+
197+
await store.handleEvent(updateEvent);
198+
checkNotNotified();
199+
check(store).messages.values.single
200+
..content.equals(originalMessage.content)
201+
..content.not((it) => it.equals(updateEvent.renderedContent!));
202+
});
203+
204+
// TODO(server-5): Cut legacy case for rendering-only message update
205+
Future<void> checkRenderingOnly({required bool legacy}) async {
206+
final originalMessage = eg.streamMessage(
207+
lastEditTimestamp: 78492,
208+
content: "<p>Hello, world</p>");
209+
final updateEvent = eg.updateMessageEditEvent(originalMessage,
210+
renderedContent: "<p>Hello, world</p> <div>Some link preview</div>",
211+
editTimestamp: 99999,
212+
renderingOnly: legacy ? null : true,
213+
userId: null,
214+
);
215+
prepare();
216+
await prepareMessages([originalMessage]);
217+
final message = store.messages.values.single;
218+
219+
await store.handleEvent(updateEvent);
220+
checkNotifiedOnce();
221+
check(store).messages.values.single
222+
..identicalTo(message)
223+
// Content is updated...
224+
..content.equals(updateEvent.renderedContent!)
225+
// ... edit timestamp is not.
226+
..lastEditTimestamp.equals(originalMessage.lastEditTimestamp)
227+
..lastEditTimestamp.not((it) => it.equals(updateEvent.editTimestamp));
228+
}
229+
230+
test('rendering-only update does not change timestamp', () async {
231+
await checkRenderingOnly(legacy: false);
232+
});
233+
234+
test('rendering-only update does not change timestamp (for old server versions)', () async {
235+
await checkRenderingOnly(legacy: true);
236+
});
237+
});
238+
156239
group('handleReactionEvent', () {
157240
ReactionEvent mkEvent(Reaction reaction, ReactionOp op, int messageId) {
158241
return ReactionEvent(

0 commit comments

Comments
 (0)