MCPcopy
hub / github.com/go-gorm/gorm / TestOmitWithUpdateWithMap

Function TestOmitWithUpdateWithMap

tests/update_test.go:425–475  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

423}
424
425func 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
477func 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})

Callers

nothing calls this directly

Calls 8

GetUserFunction · 0.85
AssertObjEqualFunction · 0.85
ModelMethod · 0.80
CreateMethod · 0.65
FirstMethod · 0.65
UpdatesMethod · 0.65
OmitMethod · 0.65
PreloadMethod · 0.65

Tested by

no test coverage detected