@@ -469,6 +469,128 @@ void main() {
469469        }
470470      }
471471    });
472+ 
473+     group ('moves' , () {
474+       final  origChannel =  eg.stream ();
475+       const  origTopic =  'origTopic' ;
476+       const  newTopic =  'newTopic' ;
477+ 
478+       group ('move read messages' , () {
479+         final  readMessages =  List <StreamMessage >.generate (10 ,
480+           (_) =>  eg.streamMessage (
481+             stream:  origChannel, topic:  origTopic, flags:  [MessageFlag .read]));
482+ 
483+         test ('to new topic' , () {
484+           prepare ();
485+           fillWithMessages (readMessages);
486+ 
487+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
488+             origMessages:  readMessages,
489+             newTopicStr:  newTopic));
490+           checkNotNotified ();
491+           checkMatchesMessages ([]);
492+         });
493+ 
494+         test ('from topic with unreads' , () {
495+           prepare ();
496+           final  unreadMessage =  eg.streamMessage (
497+             stream:  origChannel, topic:  origTopic);
498+           fillWithMessages ([...readMessages, unreadMessage]);
499+ 
500+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
501+             origMessages:  readMessages,
502+             newTopicStr:  newTopic));
503+           checkNotNotified ();
504+           checkMatchesMessages ([unreadMessage]);
505+         });
506+ 
507+         test ('to topic with unreads' , () {
508+           prepare ();
509+           final  unreadMessage =  eg.streamMessage (
510+             stream:  origChannel, topic:  newTopic);
511+           fillWithMessages ([...readMessages, unreadMessage]);
512+ 
513+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
514+             origMessages:  readMessages,
515+             newTopicStr:  newTopic,
516+           ));
517+           checkNotNotified ();
518+           checkMatchesMessages ([unreadMessage]);
519+         });
520+       });
521+ 
522+       group ('move unread messages' , () {
523+         final  unreadMessages =  List <StreamMessage >.generate (10 ,
524+           (_) =>  eg.streamMessage (stream:  origChannel, topic:  origTopic));
525+ 
526+         test ('to new topic' , () {
527+           prepare ();
528+           fillWithMessages (unreadMessages);
529+ 
530+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
531+             origMessages:  unreadMessages,
532+             newTopicStr:  newTopic));
533+           checkNotifiedOnce ();
534+           checkMatchesMessages ([
535+             for  (final  message in  unreadMessages)
536+               Message .fromJson (message.toJson ()..['subject' ] =  newTopic),
537+           ]);
538+         });
539+ 
540+         test ('from topic with unreads' , () {
541+           prepare ();
542+           final  unreadMessage =  eg.streamMessage (
543+             stream:  origChannel, topic:  origTopic);
544+           fillWithMessages ([...unreadMessages, unreadMessage]);
545+ 
546+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
547+             origMessages:  unreadMessages,
548+             newTopicStr:  newTopic));
549+           checkNotifiedOnce ();
550+           checkMatchesMessages ([
551+             for  (final  message in  unreadMessages)
552+               Message .fromJson (message.toJson ()..['subject' ] =  newTopic),
553+             unreadMessage,
554+           ]);
555+         });
556+ 
557+         test ('to topic with unreads' , () {
558+           prepare ();
559+           final  unreadMessage =  eg.streamMessage (
560+             stream:  origChannel, topic:  newTopic);
561+           fillWithMessages ([...unreadMessages, unreadMessage]);
562+ 
563+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
564+             origMessages:  unreadMessages,
565+             newTopicStr:  newTopic));
566+           checkNotifiedOnce ();
567+           checkMatchesMessages ([
568+             for  (final  message in  unreadMessages)
569+               Message .fromJson (message.toJson ()..['subject' ] =  newTopic),
570+             unreadMessage,
571+           ]);
572+         });
573+ 
574+         test ('to new channel' , () {
575+           final  message =  eg.streamMessage (
576+             id:  1 , stream:  origChannel, topic:  origTopic);
577+           final  newChannel =  eg.stream ();
578+           prepare ();
579+           fillWithMessages ([message]);
580+ 
581+           model.handleUpdateMessageEvent (eg.updateMessageEventMoveFrom (
582+             origMessages:  [message],
583+             newStreamId:  newChannel.streamId,
584+             newTopicStr:  newTopic));
585+           checkNotifiedOnce ();
586+           checkMatchesMessages ([
587+             Message .fromJson (message.toJson ()
588+               ..['stream_id' ] =  newChannel.streamId
589+               ..['subject' ] =  newTopic),
590+           ]);
591+         });
592+       });
593+     });
472594  });
473595
474596
0 commit comments