@@ -22,7 +22,8 @@ void main() {
22
22
check (RecentDmConversationsView (selfUserId: eg.selfUser.userId,
23
23
initial: []))
24
24
..map.isEmpty ()
25
- ..sorted.isEmpty ();
25
+ ..sorted.isEmpty ()
26
+ ..latestMessagesByRecipient.isEmpty ();
26
27
27
28
check (RecentDmConversationsView (selfUserId: eg.selfUser.userId,
28
29
initial: [
@@ -35,7 +36,8 @@ void main() {
35
36
key ([]): 200 ,
36
37
key ([1 ]): 100 ,
37
38
})
38
- ..sorted.deepEquals ([key ([1 , 2 ]), key ([]), key ([1 ])]);
39
+ ..sorted.deepEquals ([key ([1 , 2 ]), key ([]), key ([1 ])])
40
+ ..latestMessagesByRecipient.deepEquals ({1 : 300 , 2 : 300 });
39
41
});
40
42
41
43
group ('message event (new message)' , () {
@@ -55,7 +57,8 @@ void main() {
55
57
key ([1 ]): 200 ,
56
58
key ([1 , 2 ]): 100 ,
57
59
})
58
- ..sorted.deepEquals ([key ([1 ]), key ([1 , 2 ])]);
60
+ ..sorted.deepEquals ([key ([1 ]), key ([1 , 2 ])])
61
+ ..latestMessagesByRecipient.deepEquals ({1 : 200 , 2 : 100 });
59
62
});
60
63
61
64
test ('stream message -> do nothing' , () {
@@ -65,7 +68,8 @@ void main() {
65
68
..addListener (() { listenersNotified = true ; })
66
69
..handleMessageEvent (MessageEvent (id: 1 , message: eg.streamMessage ()))
67
70
) ..map.deepEquals (expected.map)
68
- ..sorted.deepEquals (expected.sorted);
71
+ ..sorted.deepEquals (expected.sorted)
72
+ ..latestMessagesByRecipient.deepEquals (expected.latestMessagesByRecipient);
69
73
check (listenersNotified).isFalse ();
70
74
});
71
75
@@ -80,7 +84,8 @@ void main() {
80
84
key ([1 ]): 200 ,
81
85
key ([1 , 2 ]): 100 ,
82
86
})
83
- ..sorted.deepEquals ([key ([2 ]), key ([1 ]), key ([1 , 2 ])]);
87
+ ..sorted.deepEquals ([key ([2 ]), key ([1 ]), key ([1 , 2 ])])
88
+ ..latestMessagesByRecipient.deepEquals ({1 : 200 , 2 : 300 });
84
89
check (listenersNotified).isTrue ();
85
90
});
86
91
@@ -95,7 +100,8 @@ void main() {
95
100
key ([2 ]): 150 ,
96
101
key ([1 , 2 ]): 100 ,
97
102
})
98
- ..sorted.deepEquals ([key ([1 ]), key ([2 ]), key ([1 , 2 ])]);
103
+ ..sorted.deepEquals ([key ([1 ]), key ([2 ]), key ([1 , 2 ])])
104
+ ..latestMessagesByRecipient.deepEquals ({1 : 200 , 2 : 150 });
99
105
check (listenersNotified).isTrue ();
100
106
});
101
107
@@ -110,7 +116,8 @@ void main() {
110
116
key ([1 , 2 ]): 300 ,
111
117
key ([1 ]): 200 ,
112
118
})
113
- ..sorted.deepEquals ([key ([1 , 2 ]), key ([1 ])]);
119
+ ..sorted.deepEquals ([key ([1 , 2 ]), key ([1 ])])
120
+ ..latestMessagesByRecipient.deepEquals ({1 : 300 , 2 : 300 });
114
121
check (listenersNotified).isTrue ();
115
122
});
116
123
@@ -124,7 +131,8 @@ void main() {
124
131
key ([1 ]): 300 ,
125
132
key ([1 , 2 ]): 100 ,
126
133
})
127
- ..sorted.deepEquals ([key ([1 ]), key ([1 , 2 ])]);
134
+ ..sorted.deepEquals ([key ([1 ]), key ([1 , 2 ])])
135
+ ..latestMessagesByRecipient.deepEquals ({1 : 300 , 2 : 100 });
128
136
check (listenersNotified).isTrue ();
129
137
});
130
138
@@ -137,10 +145,45 @@ void main() {
137
145
// ..addListener(() { listenersNotified = true; })
138
146
..handleMessageEvent (MessageEvent (id: 1 , message: message))
139
147
) ..map.deepEquals (expected.map)
140
- ..sorted.deepEquals (expected.sorted);
148
+ ..sorted.deepEquals (expected.sorted)
149
+ ..latestMessagesByRecipient.deepEquals (expected.latestMessagesByRecipient);
141
150
// (listeners are notified unnecessarily, but that's OK)
142
151
// check(listenersNotified).isTrue();
143
152
});
153
+
154
+ test ('new conversation with one existing and one new user, newest message' , () {
155
+ bool listenersNotified = false ;
156
+ final message = eg.dmMessage (id: 300 , from: eg.selfUser,
157
+ to: [eg.user (userId: 1 ), eg.user (userId: 3 )]);
158
+ check (setupView ()
159
+ ..addListener (() { listenersNotified = true ; })
160
+ ..handleMessageEvent (MessageEvent (id: 1 , message: message))
161
+ ) ..map.deepEquals ({
162
+ key ([1 , 3 ]): 300 ,
163
+ key ([1 ]): 200 ,
164
+ key ([1 , 2 ]): 100 ,
165
+ })
166
+ ..sorted.deepEquals ([key ([1 , 3 ]), key ([1 ]), key ([1 , 2 ])])
167
+ ..latestMessagesByRecipient.deepEquals ({1 : 300 , 2 : 100 , 3 : 300 });
168
+ check (listenersNotified).isTrue ();
169
+ });
170
+
171
+ test ('new conversation with one existing and one new user, not newest message' , () {
172
+ bool listenersNotified = false ;
173
+ final message = eg.dmMessage (id: 150 , from: eg.selfUser,
174
+ to: [eg.user (userId: 1 ), eg.user (userId: 3 )]);
175
+ check (setupView ()
176
+ ..addListener (() { listenersNotified = true ; })
177
+ ..handleMessageEvent (MessageEvent (id: 1 , message: message))
178
+ ) ..map.deepEquals ({
179
+ key ([1 ]): 200 ,
180
+ key ([1 , 3 ]): 150 ,
181
+ key ([1 , 2 ]): 100 ,
182
+ })
183
+ ..sorted.deepEquals ([key ([1 ]), key ([1 , 3 ]), key ([1 , 2 ])])
184
+ ..latestMessagesByRecipient.deepEquals ({1 : 200 , 2 : 100 , 3 : 150 });
185
+ check (listenersNotified).isTrue ();
186
+ });
144
187
});
145
188
});
146
189
}
0 commit comments