@@ -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
@@ -135,7 +143,42 @@ void main() {
135
143
check (setupView ()
136
144
..handleMessageEvent (MessageEvent (id: 1 , message: message))
137
145
) ..map.deepEquals (expected.map)
138
- ..sorted.deepEquals (expected.sorted);
146
+ ..sorted.deepEquals (expected.sorted)
147
+ ..latestMessagesByRecipient.deepEquals (expected.latestMessagesByRecipient);
148
+ });
149
+
150
+ test ('new conversation with one existing and one new user, newest message' , () {
151
+ bool listenersNotified = false ;
152
+ final message = eg.dmMessage (id: 300 , from: eg.selfUser,
153
+ to: [eg.user (userId: 1 ), eg.user (userId: 3 )]);
154
+ check (setupView ()
155
+ ..addListener (() { listenersNotified = true ; })
156
+ ..handleMessageEvent (MessageEvent (id: 1 , message: message))
157
+ ) ..map.deepEquals ({
158
+ key ([1 , 3 ]): 300 ,
159
+ key ([1 ]): 200 ,
160
+ key ([1 , 2 ]): 100 ,
161
+ })
162
+ ..sorted.deepEquals ([key ([1 , 3 ]), key ([1 ]), key ([1 , 2 ])])
163
+ ..latestMessagesByRecipient.deepEquals ({1 : 300 , 2 : 100 , 3 : 300 });
164
+ check (listenersNotified).isTrue ();
165
+ });
166
+
167
+ test ('new conversation with one existing and one new user, not newest message' , () {
168
+ bool listenersNotified = false ;
169
+ final message = eg.dmMessage (id: 150 , from: eg.selfUser,
170
+ to: [eg.user (userId: 1 ), eg.user (userId: 3 )]);
171
+ check (setupView ()
172
+ ..addListener (() { listenersNotified = true ; })
173
+ ..handleMessageEvent (MessageEvent (id: 1 , message: message))
174
+ ) ..map.deepEquals ({
175
+ key ([1 ]): 200 ,
176
+ key ([1 , 3 ]): 150 ,
177
+ key ([1 , 2 ]): 100 ,
178
+ })
179
+ ..sorted.deepEquals ([key ([1 ]), key ([1 , 3 ]), key ([1 , 2 ])])
180
+ ..latestMessagesByRecipient.deepEquals ({1 : 200 , 2 : 100 , 3 : 150 });
181
+ check (listenersNotified).isTrue ();
139
182
});
140
183
});
141
184
});
0 commit comments