Skip to content

Commit af42a31

Browse files
committed
msglist test [nfc]: Make checkInvariant compatible with MessageBase
1 parent b7cde83 commit af42a31

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

test/api/model/model_checks.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ extension TopicNameChecks on Subject<TopicName> {
3030
}
3131

3232
extension StreamConversationChecks on Subject<StreamConversation> {
33+
Subject<int> get streamId => has((x) => x.streamId, 'streamId');
3334
Subject<TopicName> get topic => has((x) => x.topic, 'topic');
3435
Subject<String?> get displayRecipient => has((x) => x.displayRecipient, 'displayRecipient');
3536
}

test/model/message_list_test.dart

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1929,17 +1929,24 @@ void checkInvariants(MessageListView model) {
19291929
check(model).fetchOlderCoolingDown.isFalse();
19301930
}
19311931

1932-
for (final message in model.messages) {
1933-
check(model.store.messages)[message.id].isNotNull().identicalTo(message);
1932+
final allMessages = <MessageBase<Conversation>>[...model.messages];
1933+
1934+
for (final message in allMessages) {
1935+
if (message is Message) {
1936+
check(model.store.messages)[message.id].isNotNull().identicalTo(message);
1937+
} else {
1938+
assert(false);
1939+
}
19341940
check(model.narrow.containsMessage(message)).isTrue();
19351941

1936-
if (message is! StreamMessage) continue;
1942+
if (message is! MessageBase<StreamConversation>) continue;
1943+
final conversation = message.conversation;
19371944
switch (model.narrow) {
19381945
case CombinedFeedNarrow():
1939-
check(model.store.isTopicVisible(message.streamId, message.topic))
1946+
check(model.store.isTopicVisible(conversation.streamId, conversation.topic))
19401947
.isTrue();
19411948
case ChannelNarrow():
1942-
check(model.store.isTopicVisibleInStream(message.streamId, message.topic))
1949+
check(model.store.isTopicVisibleInStream(conversation.streamId, conversation.topic))
19431950
.isTrue();
19441951
case TopicNarrow():
19451952
case DmNarrow():
@@ -1963,23 +1970,28 @@ void checkInvariants(MessageListView model) {
19631970
}
19641971

19651972
int i = 0;
1966-
for (int j = 0; j < model.messages.length; j++) {
1973+
for (int j = 0; j < allMessages.length; j++) {
19671974
bool forcedShowSender = false;
19681975
if (j == 0
1969-
|| !haveSameRecipient(model.messages[j-1], model.messages[j])) {
1976+
|| !haveSameRecipient(allMessages[j-1], allMessages[j])) {
19701977
check(model.items[i++]).isA<MessageListRecipientHeaderItem>()
1971-
.message.identicalTo(model.messages[j]);
1978+
.message.identicalTo(allMessages[j]);
19721979
forcedShowSender = true;
1973-
} else if (!messagesSameDay(model.messages[j-1], model.messages[j])) {
1980+
} else if (!messagesSameDay(allMessages[j-1], allMessages[j])) {
19741981
check(model.items[i++]).isA<MessageListDateSeparatorItem>()
1975-
.message.identicalTo(model.messages[j]);
1982+
.message.identicalTo(allMessages[j]);
19761983
forcedShowSender = true;
19771984
}
1978-
check(model.items[i++]).isA<MessageListMessageItem>()
1979-
..message.identicalTo(model.messages[j])
1980-
..content.identicalTo(model.contents[j])
1985+
if (j < model.messages.length) {
1986+
check(model.items[i]).isA<MessageListMessageItem>()
1987+
..message.identicalTo(model.messages[j])
1988+
..content.identicalTo(model.contents[j]);
1989+
} else {
1990+
assert(false);
1991+
}
1992+
check(model.items[i++]).isA<MessageListMessageBaseItem>()
19811993
..showSender.equals(
1982-
forcedShowSender || model.messages[j].senderId != model.messages[j-1].senderId)
1994+
forcedShowSender || allMessages[j].senderId != allMessages[j-1].senderId)
19831995
..isLastInBlock.equals(
19841996
i == model.items.length || switch (model.items[i]) {
19851997
MessageListMessageItem()

0 commit comments

Comments
 (0)