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

Function TestMany2ManyAssociation

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

Source from the content-addressed store, hash-verified

11)
12
13func TestMany2ManyAssociation(t *testing.T) {
14 user := *GetUser("many2many", Config{Languages: 2})
15
16 if err := DB.Create(&user).Error; err != nil {
17 t.Fatalf("errors happened when create: %v", err)
18 }
19
20 CheckUser(t, user, user)
21
22 // Find
23 var user2 User
24 DB.Find(&user2, "id = ?", user.ID)
25 DB.Model(&user2).Association("Languages").Find(&user2.Languages)
26
27 CheckUser(t, user2, user)
28
29 // Count
30 AssertAssociationCount(t, user, "Languages", 2, "")
31
32 // Append
33 language := Language{Code: "language-many2many-append", Name: "language-many2many-append"}
34 DB.Create(&language)
35
36 if err := DB.Model(&user2).Association("Languages").Append(&language); err != nil {
37 t.Fatalf("Error happened when append account, got %v", err)
38 }
39
40 user.Languages = append(user.Languages, language)
41 CheckUser(t, user2, user)
42
43 AssertAssociationCount(t, user, "Languages", 3, "AfterAppend")
44
45 languages := []Language{
46 {Code: "language-many2many-append-1-1", Name: "language-many2many-append-1-1"},
47 {Code: "language-many2many-append-2-1", Name: "language-many2many-append-2-1"},
48 }
49 DB.Create(&languages)
50
51 if err := DB.Model(&user2).Association("Languages").Append(&languages); err != nil {
52 t.Fatalf("Error happened when append language, got %v", err)
53 }
54
55 user.Languages = append(user.Languages, languages...)
56
57 CheckUser(t, user2, user)
58
59 AssertAssociationCount(t, user, "Languages", 5, "AfterAppendSlice")
60
61 // Replace
62 language2 := Language{Code: "language-many2many-replace", Name: "language-many2many-replace"}
63 DB.Create(&language2)
64
65 if err := DB.Model(&user2).Association("Languages").Replace(&language2); err != nil {
66 t.Fatalf("Error happened when append language, got %v", err)
67 }
68
69 user.Languages = []Language{language2}
70 CheckUser(t, user2, user)

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