@@ -247,76 +247,126 @@ void main() {
247
247
'select powersync_replace_schema(?)' , [jsonEncode (tableSchema)]);
248
248
}
249
249
250
- void insertThenUpdate () {
251
- db
252
- ..execute ('insert into test (id, name, name2) values (?, ?, ?)' ,
253
- ['id' , 'name' , 'name2' ])
254
- ..execute ('delete from ps_crud' )
255
- ..execute ('update test set name = name || ?' , ['.' ]);
256
- }
250
+ group ('for updates' , () {
251
+ void insertThenUpdate () {
252
+ db
253
+ ..execute ('insert into test (id, name, name2) values (?, ?, ?)' ,
254
+ ['id' , 'name' , 'name2' ])
255
+ ..execute ('delete from ps_crud' )
256
+ ..execute ('update test set name = name || ?' , ['.' ]);
257
+ }
258
+
259
+ test ('is not tracked by default' , () {
260
+ createTable ();
261
+ insertThenUpdate ();
262
+
263
+ final [row] = db.select ('select data from ps_crud' );
264
+ expect (jsonDecode (row[0 ] as String ), isNot (contains ('old' )));
265
+ });
257
266
258
- test ('are not tracked by default ' , () {
259
- createTable ();
260
- insertThenUpdate ();
267
+ test ('can be disabled ' , () {
268
+ createTable ({ 'include_old' : false } );
269
+ insertThenUpdate ();
261
270
262
- final [row] = db.select ('select data from ps_crud' );
263
- expect (jsonDecode (row[0 ] as String ), isNot (contains ('old' )));
264
- });
271
+ final [row] = db.select ('select data from ps_crud' );
272
+ expect (jsonDecode (row[0 ] as String ), isNot (contains ('old' )));
273
+ });
265
274
266
- test ('can be disabled ' , () {
267
- createTable ({'include_old' : false });
268
- insertThenUpdate ();
275
+ test ('can be enabled for all columns ' , () {
276
+ createTable ({'include_old' : true });
277
+ insertThenUpdate ();
269
278
270
- final [row] = db.select ('select data from ps_crud' );
271
- expect (jsonDecode (row[0 ] as String ), isNot (contains ('old' )));
272
- });
279
+ final [row] = db.select ('select data from ps_crud' );
280
+ final op = jsonDecode (row[0 ] as String );
281
+ expect (op['data' ], {'name' : 'name.' });
282
+ expect (op['old' ], {'name' : 'name' , 'name2' : 'name2' });
283
+ });
273
284
274
- test ('can be enabled for all columns' , () {
275
- createTable ({'include_old' : true });
276
- insertThenUpdate ();
285
+ test ('can be enabled for some columns' , () {
286
+ createTable ({
287
+ 'include_old' : ['name' ]
288
+ });
289
+ insertThenUpdate ();
277
290
278
- final [row] = db.select ('select data from ps_crud' );
279
- final op = jsonDecode (row[0 ] as String );
280
- expect (op['data' ], {'name' : 'name.' });
281
- expect (op['old' ], {'name' : 'name' , 'name2' : 'name2 ' });
282
- });
291
+ final [row] = db.select ('select data from ps_crud' );
292
+ final op = jsonDecode (row[0 ] as String );
293
+ expect (op['data' ], {'name' : 'name.' });
294
+ expect (op['old' ], {'name' : 'name' });
295
+ });
283
296
284
- test ('can be enabled for some columns' , () {
285
- createTable ({
286
- 'include_old' : ['name' ]
297
+ test ('can track changed values only' , () {
298
+ createTable ({
299
+ 'include_old' : true ,
300
+ 'include_old_only_when_changed' : true ,
301
+ });
302
+ insertThenUpdate ();
303
+
304
+ final [row] = db.select ('select data from ps_crud' );
305
+ final op = jsonDecode (row[0 ] as String );
306
+ expect (op['data' ], {'name' : 'name.' });
307
+ expect (op['old' ], {'name' : 'name' });
287
308
});
288
- insertThenUpdate ();
289
309
290
- final [row] = db.select ('select data from ps_crud' );
291
- final op = jsonDecode (row[0 ] as String );
292
- expect (op['data' ], {'name' : 'name.' });
293
- expect (op['old' ], {'name' : 'name' });
310
+ test ('combined column filter and only tracking changes' , () {
311
+ createTable ({
312
+ 'include_old' : ['name2' ],
313
+ 'include_old_only_when_changed' : true ,
314
+ });
315
+ insertThenUpdate ();
316
+
317
+ final [row] = db.select ('select data from ps_crud' );
318
+ final op = jsonDecode (row[0 ] as String );
319
+ expect (op['data' ], {'name' : 'name.' });
320
+ expect (op['old' ], {});
321
+ });
294
322
});
295
323
296
- test ('can track changed values only' , () {
297
- createTable ({
298
- 'include_old' : true ,
299
- 'include_old_only_when_changed' : true ,
324
+ group ('for deletes' , () {
325
+ void insertThenDelete () {
326
+ db
327
+ ..execute ('insert into test (id, name, name2) values (?, ?, ?)' ,
328
+ ['id' , 'name' , 'name2' ])
329
+ ..execute ('delete from ps_crud' )
330
+ ..execute ('delete from test' );
331
+ }
332
+
333
+ test ('is not tracked by default' , () {
334
+ createTable ();
335
+ insertThenDelete ();
336
+
337
+ final [row] = db.select ('select data from ps_crud' );
338
+ expect (jsonDecode (row[0 ] as String ), isNot (contains ('old' )));
300
339
});
301
- insertThenUpdate ();
302
340
303
- final [row] = db.select ('select data from ps_crud' );
304
- final op = jsonDecode (row[0 ] as String );
305
- expect (op['data' ], {'name' : 'name.' });
306
- expect (op['old' ], {'name' : 'name' });
307
- });
341
+ test ('can be disabled' , () {
342
+ createTable ({'include_old' : false });
343
+ insertThenDelete ();
308
344
309
- test ('combined column filter and only tracking changes' , () {
310
- createTable ({
311
- 'include_old' : ['name2' ],
312
- 'include_old_only_when_changed' : true ,
345
+ final [row] = db.select ('select data from ps_crud' );
346
+ expect (jsonDecode (row[0 ] as String ), isNot (contains ('old' )));
313
347
});
314
- insertThenUpdate ();
315
348
316
- final [row] = db.select ('select data from ps_crud' );
317
- final op = jsonDecode (row[0 ] as String );
318
- expect (op['data' ], {'name' : 'name.' });
319
- expect (op['old' ], {});
349
+ test ('can be enabled for all columns' , () {
350
+ createTable ({'include_old' : true });
351
+ insertThenDelete ();
352
+
353
+ final [row] = db.select ('select data from ps_crud' );
354
+ final op = jsonDecode (row[0 ] as String );
355
+ expect (op['data' ], null );
356
+ expect (op['old' ], {'name' : 'name' , 'name2' : 'name2' });
357
+ });
358
+
359
+ test ('can be enabled for some columns' , () {
360
+ createTable ({
361
+ 'include_old' : ['name' ]
362
+ });
363
+ insertThenDelete ();
364
+
365
+ final [row] = db.select ('select data from ps_crud' );
366
+ final op = jsonDecode (row[0 ] as String );
367
+ expect (op['data' ], null );
368
+ expect (op['old' ], {'name' : 'name' });
369
+ });
320
370
});
321
371
});
322
372
});
0 commit comments