@@ -136,11 +136,15 @@ void main() {
136
136
check (connection.takeRequests ()).length.equals (1 ); // message-list fetchInitial
137
137
}
138
138
139
- void checkRequest (int messageId, String content) {
139
+ void checkRequest (int messageId, {
140
+ required String prevContentSha256,
141
+ required String content,
142
+ }) {
140
143
check (connection.takeRequests ()).single.isA< http.Request > ()
141
144
..method.equals ('PATCH' )
142
145
..url.path.equals ('/api/v1/messages/$messageId ' )
143
146
..bodyFields.deepEquals ({
147
+ if (store.zulipFeatureLevel >= 379 ) 'prev_content_sha256' : prevContentSha256,
144
148
'content' : content,
145
149
});
146
150
}
@@ -151,8 +155,11 @@ void main() {
151
155
152
156
connection.prepare (
153
157
json: UpdateMessageResult ().toJson (), delay: Duration (seconds: 1 ));
154
- store.editMessage (messageId: message.id, newContent: 'new content' );
155
- checkRequest (message.id, 'new content' );
158
+ store.editMessage (messageId: message.id,
159
+ originalRawContent: 'old content' , newContent: 'new content' );
160
+ checkRequest (message.id,
161
+ prevContentSha256: '34a780ad578b997db55b260beb60b501f3e04d30ba1a51fcf43cd8dd1241780d' ,
162
+ content: 'new content' );
156
163
checkNotifiedOnce ();
157
164
158
165
async .elapse (Duration (milliseconds: 500 ));
@@ -179,8 +186,11 @@ void main() {
179
186
180
187
connection.prepare (
181
188
json: UpdateMessageResult ().toJson (), delay: Duration (seconds: 1 ));
182
- store.editMessage (messageId: message.id, newContent: 'new content' );
183
- checkRequest (message.id, 'new content' );
189
+ store.editMessage (messageId: message.id,
190
+ originalRawContent: 'old content' , newContent: 'new content' );
191
+ checkRequest (message.id,
192
+ prevContentSha256: '34a780ad578b997db55b260beb60b501f3e04d30ba1a51fcf43cd8dd1241780d' ,
193
+ content: 'new content' );
184
194
checkNotifiedOnce ();
185
195
186
196
async .elapse (Duration (milliseconds: 500 ));
@@ -189,8 +199,11 @@ void main() {
189
199
check (store.getEditMessageErrorStatus (otherMessage.id)).isNull ();
190
200
connection.prepare (
191
201
json: UpdateMessageResult ().toJson (), delay: Duration (seconds: 1 ));
192
- store.editMessage (messageId: otherMessage.id, newContent: 'other message new content' );
193
- checkRequest (otherMessage.id, 'other message new content' );
202
+ store.editMessage (messageId: otherMessage.id,
203
+ originalRawContent: 'other message old content' , newContent: 'other message new content' );
204
+ checkRequest (otherMessage.id,
205
+ prevContentSha256: '954956d2fe9f84b646bb7102340b759a9b627cb1ad853289b12251cb25b1e2bf' ,
206
+ content: 'other message new content' );
194
207
checkNotifiedOnce ();
195
208
196
209
async .elapse (Duration (milliseconds: 500 ));
@@ -221,7 +234,8 @@ void main() {
221
234
check (store.getEditMessageErrorStatus (message.id)).isNull ();
222
235
223
236
connection.prepare (apiException: eg.apiBadRequest (), delay: Duration (seconds: 1 ));
224
- store.editMessage (messageId: message.id, newContent: 'new content' );
237
+ store.editMessage (messageId: message.id,
238
+ originalRawContent: 'old content' , newContent: 'new content' );
225
239
checkNotifiedOnce ();
226
240
async .elapse (Duration (seconds: 1 ));
227
241
check (store.getEditMessageErrorStatus (message.id)).isNotNull ().isTrue ();
@@ -233,7 +247,8 @@ void main() {
233
247
check (store.getEditMessageErrorStatus (message.id)).isNull ();
234
248
235
249
connection.prepare (apiException: eg.apiBadRequest (), delay: Duration (seconds: 1 ));
236
- store.editMessage (messageId: message.id, newContent: 'new content' );
250
+ store.editMessage (messageId: message.id,
251
+ originalRawContent: 'old content' , newContent: 'new content' );
237
252
checkNotifiedOnce ();
238
253
async .elapse (Duration (seconds: 1 ));
239
254
check (store.getEditMessageErrorStatus (message.id)).isNotNull ().isTrue ();
@@ -255,12 +270,14 @@ void main() {
255
270
256
271
connection.prepare (
257
272
json: UpdateMessageResult ().toJson (), delay: Duration (seconds: 1 ));
258
- store.editMessage (messageId: message.id, newContent: 'new content' );
273
+ store.editMessage (messageId: message.id,
274
+ originalRawContent: 'old content' , newContent: 'new content' );
259
275
async .elapse (Duration (milliseconds: 500 ));
260
276
check (connection.takeRequests ()).length.equals (1 );
261
277
checkNotifiedOnce ();
262
278
263
- await check (store.editMessage (messageId: message.id, newContent: 'newer content' ))
279
+ await check (store.editMessage (messageId: message.id,
280
+ originalRawContent: 'old content' , newContent: 'newer content' ))
264
281
.isA <Future <void >>().throws <StateError >();
265
282
check (connection.takeRequests ()).isEmpty ();
266
283
}));
@@ -273,7 +290,8 @@ void main() {
273
290
274
291
connection.prepare (
275
292
httpException: const SocketException ('failed' ), delay: Duration (seconds: 1 ));
276
- store.editMessage (messageId: message.id, newContent: 'new content' );
293
+ store.editMessage (messageId: message.id,
294
+ originalRawContent: 'old content' , newContent: 'new content' );
277
295
checkNotifiedOnce ();
278
296
279
297
async .elapse (Duration (milliseconds: 500 ));
@@ -294,7 +312,8 @@ void main() {
294
312
295
313
connection.prepare (
296
314
httpException: const SocketException ('failed' ), delay: Duration (seconds: 1 ));
297
- store.editMessage (messageId: message.id, newContent: 'new content' );
315
+ store.editMessage (messageId: message.id,
316
+ originalRawContent: 'old content' , newContent: 'new content' );
298
317
checkNotifiedOnce ();
299
318
300
319
async .elapse (Duration (seconds: 1 ));
@@ -314,7 +333,8 @@ void main() {
314
333
315
334
connection.prepare (
316
335
httpException: const SocketException ('failed' ), delay: Duration (seconds: 1 ));
317
- store.editMessage (messageId: message.id, newContent: 'new content' );
336
+ store.editMessage (messageId: message.id,
337
+ originalRawContent: 'old content' , newContent: 'new content' );
318
338
checkNotifiedOnce ();
319
339
320
340
async .elapse (Duration (seconds: 1 ));
@@ -333,7 +353,8 @@ void main() {
333
353
check (store.getEditMessageErrorStatus (message.id)).isNull ();
334
354
335
355
connection.prepare (apiException: eg.apiBadRequest (), delay: Duration (seconds: 1 ));
336
- store.editMessage (messageId: message.id, newContent: 'new content' );
356
+ store.editMessage (messageId: message.id,
357
+ originalRawContent: 'old content' , newContent: 'new content' );
337
358
checkNotifiedOnce ();
338
359
async .elapse (Duration (seconds: 1 ));
339
360
check (store.getEditMessageErrorStatus (message.id)).isNotNull ().isTrue ();
@@ -349,7 +370,8 @@ void main() {
349
370
check (store.getEditMessageErrorStatus (message.id)).isNull ();
350
371
351
372
connection.prepare (apiException: eg.apiBadRequest (), delay: Duration (seconds: 1 ));
352
- store.editMessage (messageId: message.id, newContent: 'new content' );
373
+ store.editMessage (messageId: message.id,
374
+ originalRawContent: 'old content' , newContent: 'new content' );
353
375
checkNotifiedOnce ();
354
376
355
377
async .elapse (Duration (milliseconds: 500 ));
@@ -373,7 +395,8 @@ void main() {
373
395
374
396
connection.prepare (
375
397
json: UpdateMessageResult ().toJson (), delay: Duration (seconds: 1 ));
376
- store.editMessage (messageId: message.id, newContent: 'new content' );
398
+ store.editMessage (messageId: message.id,
399
+ originalRawContent: 'old content' , newContent: 'new content' );
377
400
checkNotifiedOnce ();
378
401
379
402
async .elapse (Duration (milliseconds: 500 ));
0 commit comments