@@ -469,6 +469,107 @@ void main() {
469469        }
470470      }
471471    });
472+ 
473+     group ('moves' , () {
474+       final  origChannel =  eg.stream ();
475+       const  origTopic =  'origTopic' ;
476+       const  newTopic =  'newTopic' ;
477+ 
478+       test ('move read messages to new topic' , () {
479+         final  message =  eg.streamMessage (
480+           stream:  origChannel, topic:  origTopic, flags:  [MessageFlag .read]);
481+         prepare ();
482+         fillWithMessages ([message]);
483+ 
484+         model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
485+           origMessages:  [message],
486+           newTopicStr:  newTopic));
487+         checkNotNotified ();
488+         checkMatchesMessages ([]);
489+       });
490+ 
491+       test ('move read messages from topic with unreads' , () {
492+         final  message1 =  eg.streamMessage (
493+           stream:  origChannel, topic:  origTopic, flags:  [MessageFlag .read]);
494+         final  message2 =  eg.streamMessage (
495+           stream:  origChannel, topic:  origTopic);
496+         prepare ();
497+         fillWithMessages ([message1, message2]);
498+ 
499+         model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
500+           origMessages:  [message1],
501+           newTopicStr:  newTopic));
502+         checkNotNotified ();
503+         checkMatchesMessages ([message2]);
504+       });
505+ 
506+       test ('move read messages to topic with unreads' , () {
507+         final  message1 =  eg.streamMessage (
508+           stream:  origChannel, topic:  origTopic, flags:  [MessageFlag .read]);
509+         final  message2 =  eg.streamMessage (
510+           stream:  origChannel, topic:  newTopic);
511+         prepare ();
512+         fillWithMessages ([message1, message2]);
513+ 
514+         model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
515+           origMessages:  [message1],
516+           newTopicStr:  newTopic,
517+         ));
518+         checkNotNotified ();
519+         checkMatchesMessages ([message2]);
520+       });
521+ 
522+       test ('move unread messages to topic with unreads' , () {
523+         final  message1 =  eg.streamMessage (
524+           id:  1 , stream:  origChannel, topic:  origTopic);
525+         final  message2 =  eg.streamMessage (
526+           id:  2 , stream:  origChannel, topic:  newTopic);
527+         prepare ();
528+         fillWithMessages ([message1, message2]);
529+ 
530+         model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
531+           origMessages:  [message1],
532+           newTopicStr:  newTopic));
533+         checkNotifiedOnce ();
534+         checkMatchesMessages ([
535+           Message .fromJson (message1.toJson ()..['subject' ] =  newTopic),
536+           message2,
537+         ]);
538+       });
539+ 
540+       test ('move unread messages to new topic' , () {
541+         final  message =  eg.streamMessage (id:  1 , stream:  origChannel);
542+         prepare ();
543+         fillWithMessages ([message]);
544+ 
545+         model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
546+           origMessages:  [message],
547+           newTopicStr:  newTopic));
548+         checkNotifiedOnce ();
549+         checkMatchesMessages ([
550+           Message .fromJson (message.toJson ()..['subject' ] =  newTopic),
551+         ]);
552+       });
553+ 
554+       test ('move unread messages to new channel' , () {
555+         final  message =  eg.streamMessage (
556+           id:  1 , stream:  origChannel, topic:  origTopic);
557+         final  newChannel =  eg.stream ();
558+         prepare ();
559+         fillWithMessages ([message]);
560+ 
561+         model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
562+           origMessages:  [message],
563+           newStreamId:  newChannel.streamId,
564+           newTopicStr:  newTopic));
565+         checkNotifiedOnce ();
566+         checkMatchesMessages ([
567+           Message .fromJson (message.toJson ()
568+             ..['stream_id' ] =  newChannel.streamId
569+             ..['subject' ] =  newTopic),
570+         ]);
571+       });
572+     });
472573  });
473574
474575
0 commit comments