Skip to content

Commit ea32921

Browse files
committed
msglist test [nfc]: Make checkInvariant compatible with MessageBase
1 parent 33dbeba commit ea32921

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

test/api/model/model_checks.dart

+1
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

+26-14
Original file line numberDiff line numberDiff line change
@@ -1926,17 +1926,24 @@ void checkInvariants(MessageListView model) {
19261926
check(model).fetchOlderCoolingDown.isFalse();
19271927
}
19281928

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

1933-
if (message is! StreamMessage) continue;
1939+
if (message is! MessageBase<StreamConversation>) continue;
1940+
final conversation = message.conversation;
19341941
switch (model.narrow) {
19351942
case CombinedFeedNarrow():
1936-
check(model.store.isTopicVisible(message.streamId, message.topic))
1943+
check(model.store.isTopicVisible(conversation.streamId, conversation.topic))
19371944
.isTrue();
19381945
case ChannelNarrow():
1939-
check(model.store.isTopicVisibleInStream(message.streamId, message.topic))
1946+
check(model.store.isTopicVisibleInStream(conversation.streamId, conversation.topic))
19401947
.isTrue();
19411948
case TopicNarrow():
19421949
case DmNarrow():
@@ -1966,23 +1973,28 @@ void checkInvariants(MessageListView model) {
19661973
if (model.fetchingOlder || model.fetchOlderCoolingDown) {
19671974
check(model.items[i++]).isA<MessageListLoadingItem>();
19681975
}
1969-
for (int j = 0; j < model.messages.length; j++) {
1976+
for (int j = 0; j < allMessages.length; j++) {
19701977
bool forcedShowSender = false;
19711978
if (j == 0
1972-
|| !haveSameRecipient(model.messages[j-1], model.messages[j])) {
1979+
|| !haveSameRecipient(allMessages[j-1], allMessages[j])) {
19731980
check(model.items[i++]).isA<MessageListRecipientHeaderItem>()
1974-
.message.identicalTo(model.messages[j]);
1981+
.message.identicalTo(allMessages[j]);
19751982
forcedShowSender = true;
1976-
} else if (!messagesSameDay(model.messages[j-1], model.messages[j])) {
1983+
} else if (!messagesSameDay(allMessages[j-1], allMessages[j])) {
19771984
check(model.items[i++]).isA<MessageListDateSeparatorItem>()
1978-
.message.identicalTo(model.messages[j]);
1985+
.message.identicalTo(allMessages[j]);
19791986
forcedShowSender = true;
19801987
}
1981-
check(model.items[i++]).isA<MessageListMessageItem>()
1982-
..message.identicalTo(model.messages[j])
1983-
..content.identicalTo(model.contents[j])
1988+
if (j < model.messages.length) {
1989+
check(model.items[i]).isA<MessageListMessageItem>()
1990+
..message.identicalTo(model.messages[j])
1991+
..content.identicalTo(model.contents[j]);
1992+
} else {
1993+
assert(false);
1994+
}
1995+
check(model.items[i++]).isA<MessageListMessageBaseItem>()
19841996
..showSender.equals(
1985-
forcedShowSender || model.messages[j].senderId != model.messages[j-1].senderId)
1997+
forcedShowSender || allMessages[j].senderId != allMessages[j-1].senderId)
19861998
..isLastInBlock.equals(
19871999
i == model.items.length || switch (model.items[i]) {
19882000
MessageListMessageItem()

0 commit comments

Comments
 (0)