@@ -545,6 +545,41 @@ void main() {
545
545
checkNotNotified ();
546
546
check (model).fetched.isFalse ();
547
547
});
548
+
549
+ test ('parse ZulipContent' , () async {
550
+ final stream = eg.stream ();
551
+ await prepare (narrow: ChannelNarrow (stream.streamId));
552
+ await prepareMessages (foundOldest: true , messages: []);
553
+
554
+ await store.handleEvent (MessageEvent (id: 0 ,
555
+ message: eg.streamMessage (stream: stream)));
556
+ // Each [checkNotifiedOnce] call ensures there's been a [checkInvariants]
557
+ // call, where the [ContentNode] gets checked. The additional checks to
558
+ // make this test explicit.
559
+ checkNotifiedOnce ();
560
+ check (model).messages.single.poll.isNull ();
561
+ check (model).contents.single.isA <ZulipContent >();
562
+ });
563
+
564
+ test ('parse PollContent' , () async {
565
+ final stream = eg.stream ();
566
+ await prepare (narrow: ChannelNarrow (stream.streamId));
567
+ await prepareMessages (foundOldest: true , messages: []);
568
+
569
+ await store.handleEvent (MessageEvent (id: 0 , message: eg.streamMessage (
570
+ stream: stream,
571
+ sender: eg.selfUser,
572
+ submessages: [
573
+ eg.submessage (senderId: eg.selfUser.userId,
574
+ content: eg.pollWidgetData (question: 'question' , options: ['A' ])),
575
+ ])));
576
+ // Each [checkNotifiedOnce] call ensures there's been a [checkInvariants]
577
+ // call, where the value of the [Poll] gets checked. The additional
578
+ // checks make this test explicit.
579
+ checkNotifiedOnce ();
580
+ check (model).messages.single.poll.isNotNull ();
581
+ check (model).contents.single.isA <PollContent >();
582
+ });
548
583
});
549
584
550
585
group ('messageContentChanged' , () {
@@ -1744,6 +1779,11 @@ void checkInvariants(MessageListView model) {
1744
1779
1745
1780
check (model).contents.length.equals (model.messages.length);
1746
1781
for (int i = 0 ; i < model.contents.length; i++ ) {
1782
+ final poll = model.messages[i].poll;
1783
+ if (poll != null ) {
1784
+ check (model).contents[i].isA <PollContent >().poll.identicalTo (poll);
1785
+ continue ;
1786
+ }
1747
1787
check (model.contents[i]).isA <ZulipContent >()
1748
1788
.equalsNode (parseContent (model.messages[i].content));
1749
1789
}
0 commit comments