@@ -296,28 +296,48 @@ func TestBucket_MoveBucket(t *testing.T) {
296
296
name string
297
297
srcBucketPath []string
298
298
dstBucketPath []string
299
+ bucketToMove string
299
300
isInlined bool
300
- expErr error
301
+ expActErr error
302
+ expAssertErr error
301
303
}{
302
304
{
303
305
name : "happy path" ,
304
- srcBucketPath : []string {"x" , "y" , "z" },
305
- dstBucketPath : []string {"a" , "b" },
306
+ srcBucketPath : []string {"rootBucketX" , "parentBucketY" , "myBucketZ" },
307
+ dstBucketPath : []string {"rootBucketA" , "parentBucketB" },
308
+ bucketToMove : "myBucketZ" ,
306
309
isInlined : false ,
307
- expErr : nil ,
310
+ expActErr : nil ,
311
+ expAssertErr : nil ,
312
+ },
313
+ {
314
+ name : "bucketToMove not exist in srcBucket" ,
315
+ srcBucketPath : []string {"rootBucketX" , "parentBucketY" },
316
+ dstBucketPath : []string {"rootBucketA" , "parentBucketB" },
317
+ bucketToMove : "myBucketZ" ,
318
+ isInlined : false ,
319
+ expActErr : berrors .ErrBucketNotFound ,
320
+ expAssertErr : nil ,
321
+ },
322
+ {
323
+ name : "bucketToMove exist in dstBucket" ,
324
+ srcBucketPath : []string {"rootBucketX" , "parentBucketY" , "myBucketZ" },
325
+ dstBucketPath : []string {"rootBucketA" , "parentBucketB" , "myBucketZ" },
326
+ bucketToMove : "myBucketZ" ,
327
+ expActErr : berrors .ErrBucketExists ,
328
+ expAssertErr : nil ,
308
329
},
309
330
}
310
331
311
332
for _ , tc := range testCases {
312
333
313
334
t .Run (tc .name , func (* testing.T ) {
314
335
db := btesting .MustCreateDB (t )
315
- var tmpFile string
336
+ // var tmpFile string
316
337
317
338
// arrange
318
339
if err := db .Update (func (tx * bolt.Tx ) error {
319
- bk := createBucketIfNotExist (t , tx , tc .srcBucketPath ... )
320
- insertRandKeysValuesBucket (t , bk , rand .Intn (4096 ))
340
+ createBucketIfNotExist (t , tx , tc .srcBucketPath ... )
321
341
createBucketIfNotExist (t , tx , tc .dstBucketPath ... )
322
342
323
343
return nil
@@ -329,42 +349,48 @@ func TestBucket_MoveBucket(t *testing.T) {
329
349
// act
330
350
if err := db .Update (func (tx * bolt.Tx ) error {
331
351
srcBucket := retrieveParentBucket (t , tx , tc .srcBucketPath ... )
332
- dstBucket := retrieveChildBucket (t , tx , tc .dstBucketPath ... )
333
- bucketToMove := tc .srcBucketPath [len (tc .srcBucketPath )- 1 ]
352
+ dstBucket := retrieveParentBucket (t , tx , tc .dstBucketPath ... )
334
353
335
354
// dump db before moving the bucket for verification later
336
- tmpFile = dumpDBToFile (t , tx )
355
+ // tmpFile = dumpDBToFile(t, tx)
337
356
338
- mErr := srcBucket .MoveBucket ([]byte (bucketToMove ), dstBucket )
339
- require .Equal (t , tc .expErr , mErr )
357
+ mErr := srcBucket .MoveBucket ([]byte (tc . bucketToMove ), dstBucket )
358
+ require .Equal (t , tc .expActErr , mErr )
340
359
341
360
return nil
342
361
}); err != nil {
343
362
t .Fatal (err )
344
363
}
345
364
db .MustCheck ()
346
365
366
+ // skip assertion if failure expected
367
+ if tc .expActErr != nil {
368
+ return
369
+ }
370
+
347
371
// assert
348
372
if err := db .View (func (tx * bolt.Tx ) error {
349
373
srcBucket := retrieveParentBucket (t , tx , tc .srcBucketPath ... )
350
- bucketToMove := tc .srcBucketPath [len (tc .srcBucketPath )- 1 ]
351
374
352
- if bk := srcBucket .Bucket ([]byte (bucketToMove )); bk != nil {
353
- t .Fatalf ("expected childBucket %v to be moved from srcBucket %v" , bucketToMove , srcBucket )
375
+ if bk := srcBucket .Bucket ([]byte (tc . bucketToMove )); bk != nil {
376
+ t .Fatalf ("expected childBucket %v to be moved from srcBucket %v" , tc . bucketToMove , srcBucket )
354
377
}
355
378
356
- dstBucket := retrieveChildBucket (t , tx , tc .dstBucketPath ... )
357
- if bk := dstBucket .Bucket ([]byte (bucketToMove )); bk == nil {
358
- t .Fatalf ("expected childBucket %v to be child of dstBucket %v" , bucketToMove , dstBucket )
379
+ dstBucket := retrieveParentBucket (t , tx , tc .dstBucketPath ... )
380
+ if bk := dstBucket .Bucket ([]byte (tc .bucketToMove )); bk == nil {
381
+ if tc .expAssertErr == berrors .ErrBucketNotFound {
382
+ return nil
383
+ }
384
+ t .Fatalf ("expected childBucket %v to be child of dstBucket %v" , tc .bucketToMove , dstBucket )
359
385
}
360
386
361
- childBucket := dstBucket .Bucket ([]byte (bucketToMove ))
387
+ childBucket := dstBucket .Bucket ([]byte (tc . bucketToMove ))
362
388
if childBucket == nil {
363
- t .Fatalf ("expected childBucket %v to exist within dstBucket %v" , bucketToMove , dstBucket )
389
+ t .Fatalf ("expected childBucket %v to exist within dstBucket %v" , tc . bucketToMove , dstBucket )
364
390
}
365
391
366
- dbAsBytes := readDBFromFile (t , tmpFile )
367
- require .Equal (t , dbAsBytes , encodeDBIntoBytes (t , tx ))
392
+ // dbAsBytes := readDBFromFile(t, tmpFile)
393
+ // require.Equal(t, dbAsBytes, encodeDBIntoBytes(t, tx))
368
394
369
395
return nil
370
396
}); err != nil {
@@ -382,12 +408,14 @@ func createBucketIfNotExist(t testing.TB, tx *bolt.Tx, paths ...string) *bolt.Bu
382
408
if err != nil {
383
409
t .Fatalf ("error creating bucket %v: %v" , paths [0 ], err )
384
410
}
411
+ insertRandKeysValuesBucket (t , bk , rand .Intn (4096 ))
385
412
386
413
for _ , key := range paths [1 :] {
387
414
bk , err = bk .CreateBucketIfNotExists ([]byte (key ))
388
415
if err != nil {
389
416
t .Fatalf ("error creating bucket %v: %v" , key , err )
390
417
}
418
+ insertRandKeysValuesBucket (t , bk , rand .Intn (4096 ))
391
419
}
392
420
393
421
return bk
0 commit comments