Skip to content

Commit 2829bd8

Browse files
PIG208chrisbobbe
authored andcommitted
msglist test [nfc]: Make checkInvariant compatible with MessageBase
1 parent 815b9d2 commit 2829bd8

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

test/api/model/model_checks.dart

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

3939
extension StreamConversationChecks on Subject<StreamConversation> {
40+
Subject<int> get streamId => has((x) => x.streamId, 'streamId');
4041
Subject<TopicName> get topic => has((x) => x.topic, 'topic');
4142
Subject<String?> get displayRecipient => has((x) => x.displayRecipient, 'displayRecipient');
4243
}

test/model/message_list_test.dart

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2153,15 +2153,21 @@ void checkInvariants(MessageListView model) {
21532153

21542154
for (final message in model.messages) {
21552155
check(model.store.messages)[message.id].isNotNull().identicalTo(message);
2156+
}
2157+
2158+
final allMessages = <MessageBase<Conversation>>[...model.messages];
2159+
2160+
for (final message in allMessages) {
21562161
check(model.narrow.containsMessage(message)).isTrue();
21572162

2158-
if (message is! StreamMessage) continue;
2163+
if (message is! MessageBase<StreamConversation>) continue;
2164+
final conversation = message.conversation;
21592165
switch (model.narrow) {
21602166
case CombinedFeedNarrow():
2161-
check(model.store.isTopicVisible(message.streamId, message.topic))
2167+
check(model.store.isTopicVisible(conversation.streamId, conversation.topic))
21622168
.isTrue();
21632169
case ChannelNarrow():
2164-
check(model.store.isTopicVisibleInStream(message.streamId, message.topic))
2170+
check(model.store.isTopicVisibleInStream(conversation.streamId, conversation.topic))
21652171
.isTrue();
21662172
case TopicNarrow():
21672173
case DmNarrow():
@@ -2204,23 +2210,28 @@ void checkInvariants(MessageListView model) {
22042210
}
22052211

22062212
int i = 0;
2207-
for (int j = 0; j < model.messages.length; j++) {
2213+
for (int j = 0; j < allMessages.length; j++) {
22082214
bool forcedShowSender = false;
22092215
if (j == 0
2210-
|| !haveSameRecipient(model.messages[j-1], model.messages[j])) {
2216+
|| !haveSameRecipient(allMessages[j-1], allMessages[j])) {
22112217
check(model.items[i++]).isA<MessageListRecipientHeaderItem>()
2212-
.message.identicalTo(model.messages[j]);
2218+
.message.identicalTo(allMessages[j]);
22132219
forcedShowSender = true;
2214-
} else if (!messagesSameDay(model.messages[j-1], model.messages[j])) {
2220+
} else if (!messagesSameDay(allMessages[j-1], allMessages[j])) {
22152221
check(model.items[i++]).isA<MessageListDateSeparatorItem>()
2216-
.message.identicalTo(model.messages[j]);
2222+
.message.identicalTo(allMessages[j]);
22172223
forcedShowSender = true;
22182224
}
2219-
check(model.items[i++]).isA<MessageListMessageItem>()
2220-
..message.identicalTo(model.messages[j])
2221-
..content.identicalTo(model.contents[j])
2225+
if (j < model.messages.length) {
2226+
check(model.items[i]).isA<MessageListMessageItem>()
2227+
..message.identicalTo(model.messages[j])
2228+
..content.identicalTo(model.contents[j]);
2229+
} else {
2230+
assert(false);
2231+
}
2232+
check(model.items[i++]).isA<MessageListMessageBaseItem>()
22222233
..showSender.equals(
2223-
forcedShowSender || model.messages[j].senderId != model.messages[j-1].senderId)
2234+
forcedShowSender || allMessages[j].senderId != allMessages[j-1].senderId)
22242235
..isLastInBlock.equals(
22252236
i == model.items.length || switch (model.items[i]) {
22262237
MessageListMessageItem()

0 commit comments

Comments
 (0)