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