| 178 | } |
| 179 | |
| 180 | func TestDeleteSliceWithAssociations(t *testing.T) { |
| 181 | users := []User{ |
| 182 | *GetUser("delete_slice_with_associations1", Config{Account: true, Pets: 4, Toys: 1, Company: true, Manager: true, Team: 1, Languages: 1, Friends: 4}), |
| 183 | *GetUser("delete_slice_with_associations2", Config{Account: true, Pets: 3, Toys: 2, Company: true, Manager: true, Team: 2, Languages: 2, Friends: 3}), |
| 184 | *GetUser("delete_slice_with_associations3", Config{Account: true, Pets: 2, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 2}), |
| 185 | *GetUser("delete_slice_with_associations4", Config{Account: true, Pets: 1, Toys: 4, Company: true, Manager: true, Team: 4, Languages: 4, Friends: 1}), |
| 186 | } |
| 187 | |
| 188 | if err := DB.Create(users).Error; err != nil { |
| 189 | t.Fatalf("failed to create user, got error %v", err) |
| 190 | } |
| 191 | |
| 192 | if err := DB.Select(clause.Associations).Delete(&users).Error; err != nil { |
| 193 | t.Fatalf("failed to delete user, got error %v", err) |
| 194 | } |
| 195 | |
| 196 | for key, value := range map[string]int64{"Account": 4, "Pets": 10, "Toys": 10, "Company": 4, "Manager": 4, "Team": 10, "Languages": 0, "Friends": 0} { |
| 197 | if count := DB.Unscoped().Model(&users).Association(key).Count(); count != value { |
| 198 | t.Errorf("user's %v expects: %v, got %v", key, value, count) |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | for key, value := range map[string]int64{"Account": 0, "Pets": 0, "Toys": 0, "Company": 4, "Manager": 4, "Team": 0, "Languages": 0, "Friends": 0} { |
| 203 | if count := DB.Model(&users).Association(key).Count(); count != value { |
| 204 | t.Errorf("user's %v expects: %v, got %v", key, value, count) |
| 205 | } |
| 206 | } |
| 207 | } |
| 208 | |
| 209 | // only sqlite, postgres, gaussdb, sqlserver support returning |
| 210 | func TestSoftDeleteReturning(t *testing.T) { |