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

Function TestMany2ManyAssociationForSlice

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

Source from the content-addressed store, hash-verified

127}
128
129func TestMany2ManyAssociationForSlice(t *testing.T) {
130 users := []User{
131 *GetUser("slice-many2many-1", Config{Languages: 2}),
132 *GetUser("slice-many2many-2", Config{Languages: 0}),
133 *GetUser("slice-many2many-3", Config{Languages: 4}),
134 }
135
136 DB.Create(&users)
137
138 // Count
139 AssertAssociationCount(t, users, "Languages", 6, "")
140
141 // Find
142 var languages []Language
143 if DB.Model(&users).Association("Languages").Find(&languages); len(languages) != 6 {
144 t.Errorf("languages count should be %v, but got %v", 6, len(languages))
145 }
146
147 // Append
148 languages1 := []Language{
149 {Code: "language-many2many-append-1", Name: "language-many2many-append-1"},
150 }
151 languages2 := []Language{}
152 languages3 := []Language{
153 {Code: "language-many2many-append-3-1", Name: "language-many2many-append-3-1"},
154 {Code: "language-many2many-append-3-2", Name: "language-many2many-append-3-2"},
155 }
156 DB.Create(&languages1)
157 DB.Create(&languages3)
158
159 DB.Model(&users).Association("Languages").Append(&languages1, &languages2, &languages3)
160
161 AssertAssociationCount(t, users, "Languages", 9, "After Append")
162
163 languages2_1 := []*Language{
164 {Code: "language-slice-replace-1-1", Name: "language-slice-replace-1-1"},
165 {Code: "language-slice-replace-1-2", Name: "language-slice-replace-1-2"},
166 }
167 languages2_2 := []*Language{
168 {Code: "language-slice-replace-2-1", Name: "language-slice-replace-2-1"},
169 {Code: "language-slice-replace-2-2", Name: "language-slice-replace-2-2"},
170 }
171 languages2_3 := &Language{Code: "language-slice-replace-3", Name: "language-slice-replace-3"}
172 DB.Create(&languages2_1)
173 DB.Create(&languages2_2)
174 DB.Create(&languages2_3)
175
176 // Replace
177 DB.Model(&users).Association("Languages").Replace(&languages2_1, &languages2_2, languages2_3)
178
179 AssertAssociationCount(t, users, "Languages", 5, "After Replace")
180
181 // Delete
182 if err := DB.Model(&users).Association("Languages").Delete(&users[2].Languages); err != nil {
183 t.Errorf("no error should happened when deleting language, but got %v", err)
184 }
185
186 AssertAssociationCount(t, users, "Languages", 4, "after delete")

Callers

nothing calls this directly

Calls 10

GetUserFunction · 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