(t *testing.T)
| 197 | } |
| 198 | |
| 199 | func 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) |
nothing calls this directly
no test coverage detected