github.com/paweljw/pop/v5@v5.4.6/callbacks_test.go (about) 1 package pop 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func Test_Callbacks(t *testing.T) { 10 if PDB == nil { 11 t.Skip("skipping integration tests") 12 } 13 transaction(func(tx *Connection) { 14 r := require.New(t) 15 16 user := &CallbacksUser{ 17 BeforeS: "BS", 18 BeforeC: "BC", 19 BeforeU: "BU", 20 BeforeD: "BD", 21 BeforeV: "BV", 22 AfterS: "AS", 23 AfterC: "AC", 24 AfterU: "AU", 25 AfterD: "AD", 26 AfterF: "AF", 27 } 28 29 r.NoError(tx.Save(user)) 30 31 r.Equal("BeforeSave", user.BeforeS) 32 r.Equal("BeforeCreate", user.BeforeC) 33 r.Equal("AfterSave", user.AfterS) 34 r.Equal("AfterCreate", user.AfterC) 35 r.Equal("BU", user.BeforeU) 36 r.Equal("AU", user.AfterU) 37 38 r.NoError(tx.Update(user)) 39 40 r.Equal("BeforeUpdate", user.BeforeU) 41 r.Equal("AfterUpdate", user.AfterU) 42 r.Equal("BD", user.BeforeD) 43 r.Equal("AD", user.AfterD) 44 45 r.Equal("AF", user.AfterF) 46 r.NoError(tx.Find(user, user.ID)) 47 r.Equal("AfterFind", user.AfterF) 48 49 r.NoError(tx.Destroy(user)) 50 51 r.Equal("BeforeDestroy", user.BeforeD) 52 r.Equal("AfterDestroy", user.AfterD) 53 54 verrs, err := tx.ValidateAndSave(user) 55 r.False(verrs.HasAny()) 56 r.NoError(err) 57 r.Equal("BeforeValidate", user.BeforeV) 58 }) 59 } 60 61 func Test_Callbacks_on_Slice(t *testing.T) { 62 if PDB == nil { 63 t.Skip("skipping integration tests") 64 } 65 transaction(func(tx *Connection) { 66 r := require.New(t) 67 for i := 0; i < 2; i++ { 68 r.NoError(tx.Create(&CallbacksUser{})) 69 } 70 71 users := CallbacksUsers{} 72 r.NoError(tx.All(&users)) 73 74 r.Len(users, 2) 75 76 for _, u := range users { 77 r.Equal("AfterFind", u.AfterF) 78 } 79 }) 80 }