| 373 | } |
| 374 | |
| 375 | func TestOmitWithUpdate(t *testing.T) { |
| 376 | user := *GetUser("omit_update", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4}) |
| 377 | DB.Create(&user) |
| 378 | |
| 379 | var result User |
| 380 | DB.First(&result, user.ID) |
| 381 | |
| 382 | user2 := *GetUser("omit_update_new", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4}) |
| 383 | result.Name = user2.Name |
| 384 | result.Age = 50 |
| 385 | result.Account = user2.Account |
| 386 | result.Pets = user2.Pets |
| 387 | result.Toys = user2.Toys |
| 388 | result.Company = user2.Company |
| 389 | result.Manager = user2.Manager |
| 390 | result.Team = user2.Team |
| 391 | result.Languages = user2.Languages |
| 392 | result.Friends = user2.Friends |
| 393 | |
| 394 | DB.Omit("Name", "Account", "Toys", "Manager", "ManagerID", "Languages").Save(&result) |
| 395 | |
| 396 | var result2 User |
| 397 | DB.Preload("Account").Preload("Pets").Preload("Toys").Preload("Company").Preload("Manager").Preload("Team").Preload("Languages").Preload("Friends").First(&result2, user.ID) |
| 398 | |
| 399 | result.Pets = append(user.Pets, result.Pets...) |
| 400 | result.Team = append(user.Team, result.Team...) |
| 401 | result.Friends = append(user.Friends, result.Friends...) |
| 402 | |
| 403 | sort.Slice(result.Pets, func(i, j int) bool { |
| 404 | return result.Pets[i].ID < result.Pets[j].ID |
| 405 | }) |
| 406 | sort.Slice(result.Team, func(i, j int) bool { |
| 407 | return result.Team[i].ID < result.Team[j].ID |
| 408 | }) |
| 409 | sort.Slice(result.Friends, func(i, j int) bool { |
| 410 | return result.Friends[i].ID < result.Friends[j].ID |
| 411 | }) |
| 412 | sort.Slice(result2.Pets, func(i, j int) bool { |
| 413 | return result2.Pets[i].ID < result2.Pets[j].ID |
| 414 | }) |
| 415 | sort.Slice(result2.Team, func(i, j int) bool { |
| 416 | return result2.Team[i].ID < result2.Team[j].ID |
| 417 | }) |
| 418 | sort.Slice(result2.Friends, func(i, j int) bool { |
| 419 | return result2.Friends[i].ID < result2.Friends[j].ID |
| 420 | }) |
| 421 | |
| 422 | AssertObjEqual(t, result2, result, "Age", "Pets", "Company", "CompanyID", "Team", "Friends") |
| 423 | } |
| 424 | |
| 425 | func TestOmitWithUpdateWithMap(t *testing.T) { |
| 426 | user := *GetUser("omit_update_map", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4}) |