@@ -533,19 +533,31 @@ void main() {
533533 });
534534 });
535535
536- test ('on ID collision, new message does not clobber old in store.messages' , () async {
537- await prepare ();
538- final message = eg.streamMessage (id: 1 , content: '<p>foo</p>' );
539- await addMessages ([message]);
540- check (store.messages).deepEquals ({1 : message});
541- final newMessage = eg.streamMessage (id: 1 , content: '<p>bar</p>' );
542- final messages = [newMessage];
543- store.reconcileMessages (messages);
544- check (messages).deepEquals (
545- // (We'll check more messages in an upcoming commit.)
546- [message].map (conditionIdentical));
547- check (store.messages).deepEquals ({1 : message});
548- });
536+ test (
537+ 'on fetched message with ID already in store.messages, '
538+ 'fetched does not clobber existing except in unsubscribed channel' ,
539+ () async {
540+ await prepare ();
541+
542+ final otherChannel = eg.stream ();
543+ await store.addStream (otherChannel);
544+ check (store.subscriptions[otherChannel.streamId]).isNull ();
545+
546+ final message1 = eg.streamMessage (id: 1 , content: '<p>foo</p>' );
547+ final message2 = eg.streamMessage (id: 2 , content: '<p>foo</p>' , stream: otherChannel);
548+ final message3 = eg.streamMessage (id: 3 , content: '<p>foo</p>' );
549+ await addMessages ([message1, message2, message3]);
550+ check (store.messages).deepEquals ({1 : message1, 2 : message2, 3 : message3});
551+ final newMessage1 = eg.streamMessage (id: 1 , content: '<p>bar</p>' );
552+ final newMessage2 = eg.streamMessage (id: 2 , content: '<p>bar</p>' , stream: otherChannel);
553+ final newMessage3 = eg.streamMessage (id: 3 , content: '<p>bar</p>' );
554+ final messages = [newMessage1, newMessage2, newMessage3];
555+ store.reconcileMessages (messages);
556+ check (messages).deepEquals (
557+ [message1, newMessage2, message3].map (conditionIdentical));
558+ check (store.messages)
559+ .deepEquals ({1 : message1, 2 : newMessage2, 3 : message3});
560+ });
549561
550562 test ('matchContent and matchTopic are removed' , () async {
551563 await prepare ();
0 commit comments