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

Function TestSingleTableMany2ManyAssociation

tests/associations_many2many_test.go:199–278  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

197}
198
199func TestSingleTableMany2ManyAssociation(t *testing.T) {
200 user := *GetUser("many2many", Config{Friends: 2})
201
202 if err := DB.Create(&user).Error; err != nil {
203 t.Fatalf("errors happened when create: %v", err)
204 }
205
206 CheckUser(t, user, user)
207
208 // Find
209 var user2 User
210 DB.Find(&user2, "id = ?", user.ID)
211 DB.Model(&user2).Association("Friends").Find(&user2.Friends)
212
213 CheckUser(t, user2, user)
214
215 // Count
216 AssertAssociationCount(t, user, "Friends", 2, "")
217
218 // Append
219 friend := *GetUser("friend", Config{})
220
221 if err := DB.Model(&user2).Association("Friends").Append(&friend); err != nil {
222 t.Fatalf("Error happened when append account, got %v", err)
223 }
224
225 user.Friends = append(user.Friends, &friend)
226 CheckUser(t, user2, user)
227
228 AssertAssociationCount(t, user, "Friends", 3, "AfterAppend")
229
230 friends := []*User{GetUser("friend-append-1", Config{}), GetUser("friend-append-2", Config{})}
231
232 if err := DB.Model(&user2).Association("Friends").Append(&friends); err != nil {
233 t.Fatalf("Error happened when append friend, got %v", err)
234 }
235
236 user.Friends = append(user.Friends, friends...)
237
238 CheckUser(t, user2, user)
239
240 AssertAssociationCount(t, user, "Friends", 5, "AfterAppendSlice")
241
242 // Replace
243 friend2 := *GetUser("friend-replace-2", Config{})
244
245 if err := DB.Model(&user2).Association("Friends").Replace(&friend2); err != nil {
246 t.Fatalf("Error happened when append friend, got %v", err)
247 }
248
249 user.Friends = []*User{&friend2}
250 CheckUser(t, user2, user)
251
252 AssertAssociationCount(t, user2, "Friends", 1, "AfterReplace")
253
254 // Delete
255 if err := DB.Model(&user2).Association("Friends").Delete(&User{}); err != nil {
256 t.Fatalf("Error happened when delete friend, got %v", err)

Callers

nothing calls this directly

Calls 11

GetUserFunction · 0.85
CheckUserFunction · 0.85
AssertAssociationCountFunction · 0.85
ModelMethod · 0.80
AppendMethod · 0.80
ClearMethod · 0.80
CreateMethod · 0.65
FindMethod · 0.65
ReplaceMethod · 0.65
DeleteMethod · 0.65
AssociationMethod · 0.45

Tested by

no test coverage detected