(t *testing.T)
| 127 | } |
| 128 | |
| 129 | func 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") |
nothing calls this directly
no test coverage detected