(t *testing.T)
| 11 | ) |
| 12 | |
| 13 | func 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) |
nothing calls this directly
no test coverage detected