MCPcopy
hub / github.com/go-gorm/gorm / TestDisabledNestedTransaction

Function TestDisabledNestedTransaction

tests/transaction_test.go:369–430  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

367}
368
369func TestDisabledNestedTransaction(t *testing.T) {
370 var (
371 user = *GetUser("transaction-nested", Config{})
372 user1 = *GetUser("transaction-nested-1", Config{})
373 user2 = *GetUser("transaction-nested-2", Config{})
374 )
375
376 if err := DB.Session(&gorm.Session{DisableNestedTransaction: true}).Transaction(func(tx *gorm.DB) error {
377 tx.Create(&user)
378
379 if err := tx.First(&User{}, "name = ?", user.Name).Error; err != nil {
380 t.Fatalf("Should find saved record")
381 }
382
383 if err := tx.Transaction(func(tx1 *gorm.DB) error {
384 tx1.Create(&user1)
385
386 if err := tx1.First(&User{}, "name = ?", user1.Name).Error; err != nil {
387 t.Fatalf("Should find saved record")
388 }
389
390 return errors.New("rollback")
391 }); err == nil {
392 t.Fatalf("nested transaction should returns error")
393 }
394
395 if err := tx.First(&User{}, "name = ?", user1.Name).Error; err != nil {
396 t.Fatalf("Should not rollback record if disabled nested transaction support")
397 }
398
399 if err := tx.Transaction(func(tx2 *gorm.DB) error {
400 tx2.Create(&user2)
401
402 if err := tx2.First(&User{}, "name = ?", user2.Name).Error; err != nil {
403 t.Fatalf("Should find saved record")
404 }
405
406 return nil
407 }); err != nil {
408 t.Fatalf("nested transaction returns error: %v", err)
409 }
410
411 if err := tx.First(&User{}, "name = ?", user2.Name).Error; err != nil {
412 t.Fatalf("Should find saved record")
413 }
414 return nil
415 }); err != nil {
416 t.Fatalf("no error should return, but got %v", err)
417 }
418
419 if err := DB.First(&User{}, "name = ?", user.Name).Error; err != nil {
420 t.Fatalf("Should find saved record")
421 }
422
423 if err := DB.First(&User{}, "name = ?", user1.Name).Error; err != nil {
424 t.Fatalf("Should not rollback record if disabled nested transaction support")
425 }
426

Callers

nothing calls this directly

Calls 6

GetUserFunction · 0.85
TransactionMethod · 0.80
SessionMethod · 0.80
CreateMethod · 0.65
FirstMethod · 0.65
NewMethod · 0.65

Tested by

no test coverage detected