| 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}) |
| 427 | DB.Create(&user) |
| 428 | |
| 429 | var result User |
| 430 | DB.First(&result, user.ID) |
| 431 | |
| 432 | user2 := *GetUser("omit_update_map_new", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4}) |
| 433 | updateValues := map[string]interface{}{ |
| 434 | "Name": user2.Name, |
| 435 | "Age": 50, |
| 436 | "Account": user2.Account, |
| 437 | "Pets": user2.Pets, |
| 438 | "Toys": user2.Toys, |
| 439 | "Company": user2.Company, |
| 440 | "Manager": user2.Manager, |
| 441 | "Team": user2.Team, |
| 442 | "Languages": user2.Languages, |
| 443 | "Friends": user2.Friends, |
| 444 | } |
| 445 | |
| 446 | DB.Model(&result).Omit("Name", "Account", "Toys", "Manager", "ManagerID", "Languages").Updates(updateValues) |
| 447 | |
| 448 | var result2 User |
| 449 | DB.Preload("Account").Preload("Pets").Preload("Toys").Preload("Company").Preload("Manager").Preload("Team").Preload("Languages").Preload("Friends").First(&result2, user.ID) |
| 450 | |
| 451 | result.Pets = append(user.Pets, result.Pets...) |
| 452 | result.Team = append(user.Team, result.Team...) |
| 453 | result.Friends = append(user.Friends, result.Friends...) |
| 454 | |
| 455 | sort.Slice(result.Pets, func(i, j int) bool { |
| 456 | return result.Pets[i].ID < result.Pets[j].ID |
| 457 | }) |
| 458 | sort.Slice(result.Team, func(i, j int) bool { |
| 459 | return result.Team[i].ID < result.Team[j].ID |
| 460 | }) |
| 461 | sort.Slice(result.Friends, func(i, j int) bool { |
| 462 | return result.Friends[i].ID < result.Friends[j].ID |
| 463 | }) |
| 464 | sort.Slice(result2.Pets, func(i, j int) bool { |
| 465 | return result2.Pets[i].ID < result2.Pets[j].ID |
| 466 | }) |
| 467 | sort.Slice(result2.Team, func(i, j int) bool { |
| 468 | return result2.Team[i].ID < result2.Team[j].ID |
| 469 | }) |
| 470 | sort.Slice(result2.Friends, func(i, j int) bool { |
| 471 | return result2.Friends[i].ID < result2.Friends[j].ID |
| 472 | }) |
| 473 | |
| 474 | AssertObjEqual(t, result2, result, "Age", "Pets", "Company", "CompanyID", "Team", "Friends") |
| 475 | } |
| 476 | |
| 477 | func TestSelectWithUpdateColumn(t *testing.T) { |
| 478 | user := *GetUser("select_with_update_column", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4}) |