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

Function TestSelectWithUpdateWithMap

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

Source from the content-addressed store, hash-verified

316}
317
318func TestSelectWithUpdateWithMap(t *testing.T) {
319 user := *GetUser("select_update_map", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4})
320 DB.Create(&user)
321
322 var result User
323 DB.First(&result, user.ID)
324
325 user2 := *GetUser("select_update_map_new", Config{Account: true, Pets: 3, Toys: 3, Company: true, Manager: true, Team: 3, Languages: 3, Friends: 4})
326 updateValues := map[string]interface{}{
327 "Name": user2.Name,
328 "Age": 50,
329 "Account": user2.Account,
330 "Pets": user2.Pets,
331 "Toys": user2.Toys,
332 "Company": user2.Company,
333 "Manager": user2.Manager,
334 "Team": user2.Team,
335 "Languages": user2.Languages,
336 "Friends": user2.Friends,
337 }
338
339 DB.Model(&result).Omit("name", "updated_at").Updates(updateValues)
340
341 var result2 User
342 DB.Preload("Account").Preload("Pets").Preload("Toys").Preload("Company").Preload("Manager").Preload("Team").Preload("Languages").Preload("Friends").First(&result2, user.ID)
343
344 result.Languages = append(user.Languages, result.Languages...)
345 result.Toys = append(user.Toys, result.Toys...)
346
347 sort.Slice(result.Languages, func(i, j int) bool {
348 return strings.Compare(result.Languages[i].Code, result.Languages[j].Code) > 0
349 })
350
351 sort.Slice(result.Toys, func(i, j int) bool {
352 return result.Toys[i].ID < result.Toys[j].ID
353 })
354
355 sort.Slice(result2.Languages, func(i, j int) bool {
356 return strings.Compare(result2.Languages[i].Code, result2.Languages[j].Code) > 0
357 })
358
359 sort.Slice(result2.Toys, func(i, j int) bool {
360 return result2.Toys[i].ID < result2.Toys[j].ID
361 })
362
363 AssertObjEqual(t, result2, result, "Name", "Account", "Toys", "Manager", "ManagerID", "Languages")
364}
365
366func TestWithUpdateWithInvalidMap(t *testing.T) {
367 user := *GetUser("update_with_invalid_map", Config{})

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