@@ -196,6 +196,7 @@ func Test_Changeset_Multi(t *testing.T) {
196
196
// Create tables, and attach a session.
197
197
mustExecute (conn , `CREATE TABLE table1 (id INTEGER PRIMARY KEY, name TEXT, gpa FLOAT, alive boolean)` )
198
198
mustExecute (conn , `CREATE TABLE table2 (id INTEGER PRIMARY KEY, age INTEGER)` )
199
+ mustExecute (conn , `CREATE TABLE table3 (id INTEGER PRIMARY KEY, company TEXT)` )
199
200
var session * Session
200
201
if err := conn .Raw (func (raw any ) error {
201
202
var err error
@@ -219,6 +220,8 @@ func Test_Changeset_Multi(t *testing.T) {
219
220
mustExecute (conn , `INSERT INTO table1 (name, gpa, alive) VALUES ('declan', 2.5, 0)` )
220
221
mustExecute (conn , `INSERT INTO table2 (age) VALUES (20)` )
221
222
mustExecute (conn , `INSERT INTO table2 (age) VALUES (30)` )
223
+ mustExecute (conn , `INSERT INTO table3 (company) VALUES ('foo')` )
224
+ mustExecute (conn , `UPDATE table3 SET company = 'bar' WHERE id = 1` )
222
225
223
226
// Prepare to iterate over the changes.
224
227
changeset , err := NewChangeset (session )
@@ -233,31 +236,37 @@ func Test_Changeset_Multi(t *testing.T) {
233
236
tt := []struct {
234
237
table string
235
238
op int
236
- data []any
239
+ old []any
240
+ new []any
237
241
}{
238
242
{
239
243
table : "table1" ,
240
244
op : SQLITE_INSERT ,
241
- data : []any {int64 (1 ), "fiona" , 3.5 , int64 (1 )},
245
+ new : []any {int64 (1 ), "fiona" , 3.5 , int64 (1 )},
242
246
},
243
247
{
244
248
table : "table1" ,
245
249
op : SQLITE_INSERT ,
246
- data : []any {int64 (2 ), "declan" , 2.5 , int64 (0 )},
250
+ new : []any {int64 (2 ), "declan" , 2.5 , int64 (0 )},
247
251
},
248
252
{
249
253
table : "table2" ,
250
254
op : SQLITE_INSERT ,
251
- data : []any {int64 (1 ), int64 (20 )},
255
+ new : []any {int64 (1 ), int64 (20 )},
252
256
},
253
257
{
254
258
table : "table2" ,
255
259
op : SQLITE_INSERT ,
256
- data : []any {int64 (2 ), int64 (30 )},
260
+ new : []any {int64 (2 ), int64 (30 )},
261
+ },
262
+ {
263
+ table : "table3" ,
264
+ op : SQLITE_INSERT ,
265
+ new : []any {int64 (1 ), "bar" },
257
266
},
258
267
}
259
268
260
- for _ , v := range tt {
269
+ for i , v := range tt {
261
270
if b , err := iter .Next (); err != nil {
262
271
t .Fatalf ("Failed to get next changeset: %v" , err )
263
272
} else if ! b {
@@ -271,20 +280,34 @@ func Test_Changeset_Multi(t *testing.T) {
271
280
if exp , got := v .table , tblName ; exp != got {
272
281
t .Fatalf ("Expected table name '%s', got '%s'" , exp , got )
273
282
}
274
- if exp , got := len (v .data ), nCol ; exp != got {
275
- t .Fatalf ("Expected %d columns, got %d" , exp , got )
276
- }
283
+ // if exp, got := len(v.new ), nCol; exp != got {
284
+ // t.Fatalf("Expected %d columns, got %d", exp, got)
285
+ // }
277
286
if exp , got := v .op , op ; exp != got {
278
287
t .Fatalf ("Expected operation %d, got %d" , exp , got )
279
288
}
280
289
281
- dest := make ([]any , nCol )
282
- if err := iter .New (dest ); err != nil {
283
- t .Fatalf ("Failed to get new row: %v" , err )
290
+ if v .old != nil {
291
+ dest := make ([]any , nCol )
292
+ if err := iter .Old (dest ); err != nil {
293
+ t .Fatalf ("Failed to get old row: %v" , err )
294
+ }
295
+ for j , d := range v .old {
296
+ if exp , got := d , dest [j ]; exp != got {
297
+ t .Fatalf ("Test %d, expected %v (%T) for dest[%d], got %v (%T)" , i , exp , exp , j , got , got )
298
+ }
299
+ }
284
300
}
285
- for j , d := range v .data {
286
- if exp , got := d , dest [j ]; exp != got {
287
- t .Fatalf ("Expected %v (%T) for dest[%d], got %v (%T)" , exp , exp , j , got , got )
301
+
302
+ if v .new != nil {
303
+ dest := make ([]any , nCol )
304
+ if err := iter .New (dest ); err != nil {
305
+ t .Fatalf ("Failed to get new row: %v" , err )
306
+ }
307
+ for j , d := range v .new {
308
+ if exp , got := d , dest [j ]; exp != got {
309
+ t .Fatalf ("Test %d, expected %v (%T) for new dest[%d], got %v (%T)" , i , exp , exp , j , got , got )
310
+ }
288
311
}
289
312
}
290
313
}
0 commit comments