@@ -469,6 +469,107 @@ void main() {
469
469
}
470
470
}
471
471
});
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
+ });
472
573
});
473
574
474
575
0 commit comments