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

Function TestUpdateBelongsTo

tests/update_belongs_to_test.go:10–59  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

8)
9
10func TestUpdateBelongsTo(t *testing.T) {
11 user := *GetUser("update-belongs-to", Config{})
12
13 if err := DB.Create(&user).Error; err != nil {
14 t.Fatalf("errors happened when create: %v", err)
15 }
16
17 user.Company = Company{Name: "company-belongs-to-association"}
18 user.Manager = &User{Name: "manager-belongs-to-association"}
19 if err := DB.Save(&user).Error; err != nil {
20 t.Fatalf("errors happened when update: %v", err)
21 }
22
23 var user2 User
24 DB.Preload("Company").Preload("Manager").Find(&user2, "id = ?", user.ID)
25 CheckUser(t, user2, user)
26
27 user.Company.Name += "new"
28 user.Manager.Name += "new"
29 if err := DB.Save(&user).Error; err != nil {
30 t.Fatalf("errors happened when update: %v", err)
31 }
32
33 var user3 User
34 DB.Preload("Company").Preload("Manager").Find(&user3, "id = ?", user.ID)
35 CheckUser(t, user2, user3)
36
37 if err := DB.Session(&gorm.Session{FullSaveAssociations: true}).Save(&user).Error; err != nil {
38 t.Fatalf("errors happened when update: %v", err)
39 }
40
41 var user4 User
42 DB.Preload("Company").Preload("Manager").Find(&user4, "id = ?", user.ID)
43 CheckUser(t, user4, user)
44
45 user.Company.Name += "new2"
46 user.Manager.Name += "new2"
47 if err := DB.Session(&gorm.Session{FullSaveAssociations: true}).Select("`Company`").Save(&user).Error; err != nil {
48 t.Fatalf("errors happened when update: %v", err)
49 }
50
51 var user5 User
52 DB.Preload("Company").Preload("Manager").Find(&user5, "id = ?", user.ID)
53 if user5.Manager.Name != user4.Manager.Name {
54 t.Errorf("should not update user's manager")
55 } else {
56 user.Manager.Name = user4.Manager.Name
57 }
58 CheckUser(t, user, user5)
59}

Callers

nothing calls this directly

Calls 8

GetUserFunction · 0.85
CheckUserFunction · 0.85
SaveMethod · 0.80
SessionMethod · 0.80
CreateMethod · 0.65
FindMethod · 0.65
PreloadMethod · 0.65
SelectMethod · 0.65

Tested by

no test coverage detected