executor_test.go 902 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package db
  2. import (
  3. "errors"
  4. "testing"
  5. "github.com/langgenius/dify-plugin-daemon/internal/db/pg"
  6. "gorm.io/gorm"
  7. )
  8. func TestTransaction(t *testing.T) {
  9. var err error
  10. if DifyPluginDB, err = pg.InitPluginDB("0.0.0.0", 5432, "testing", "postgres", "postgres", "difyai123456", "disable"); err != nil {
  11. t.Fatal(err)
  12. }
  13. defer Close()
  14. type TestTable struct {
  15. gorm.Model
  16. }
  17. err = CreateTable(&TestTable{})
  18. if err != nil {
  19. t.Fatal(err)
  20. }
  21. defer DropTable(&TestTable{})
  22. err = WithTransaction(func(tx *gorm.DB) error {
  23. data := TestTable{}
  24. err := tx.Create(&data).Error
  25. if err != nil {
  26. return err
  27. }
  28. return errors.New("rollback")
  29. })
  30. if err == nil {
  31. t.Fatal("expected error")
  32. } else if err.Error() != "rollback" {
  33. t.Fatal("unexpected error")
  34. }
  35. count, err := GetCount[TestTable]()
  36. if err != nil {
  37. t.Fatal(err)
  38. }
  39. if count != 0 {
  40. t.Fatal("unexpected count")
  41. }
  42. }