github.com/friesencr/pop/v6@v6.1.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 r.Empty(user.AfterEF) 49 50 r.NoError(tx.Eager().Find(user, user.ID)) 51 r.Equal("AfterEagerFind", user.AfterEF) 52 53 r.NoError(tx.Destroy(user)) 54 55 r.Equal("BeforeDestroy", user.BeforeD) 56 r.Equal("AfterDestroy", user.AfterD) 57 58 verrs, err := tx.ValidateAndSave(user) 59 r.False(verrs.HasAny()) 60 r.NoError(err) 61 r.Equal("BeforeValidate", user.BeforeV) 62 }) 63 } 64 65 func Test_Callbacks_on_Slice(t *testing.T) { 66 if PDB == nil { 67 t.Skip("skipping integration tests") 68 } 69 transaction(func(tx *Connection) { 70 r := require.New(t) 71 for i := 0; i < 2; i++ { 72 r.NoError(tx.Create(&CallbacksUser{})) 73 } 74 75 users := CallbacksUsers{} 76 r.NoError(tx.All(&users)) 77 r.Len(users, 2) 78 for _, u := range users { 79 r.Equal("AfterFind", u.AfterF) 80 r.Empty(u.AfterEF) 81 } 82 83 r.NoError(tx.Eager().All(&users)) 84 r.Len(users, 2) 85 for _, u := range users { 86 r.Equal("AfterEagerFind", u.AfterEF) 87 } 88 }) 89 }