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

Function TestGenericsCreate

tests/generics_test.go:22–102  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

20)
21
22func TestGenericsCreate(t *testing.T) {
23 ctx := context.Background()
24
25 user := User{Name: "TestGenericsCreate", Age: 18}
26 err := gorm.G[User](DB).Create(ctx, &user)
27 if err != nil {
28 t.Fatalf("Create failed: %v", err)
29 }
30 if user.ID == 0 {
31 t.Fatalf("no primary key found for %v", user)
32 }
33
34 if u, err := gorm.G[User](DB).Where("name = ?", user.Name).First(ctx); err != nil {
35 t.Fatalf("failed to find user, got error: %v", err)
36 } else if u.Name != user.Name || u.ID != user.ID {
37 t.Errorf("found invalid user, got %v, expect %v", u, user)
38 }
39
40 if u, err := gorm.G[User](DB).Where("name = ?", user.Name).Take(ctx); err != nil {
41 t.Fatalf("failed to find user, got error: %v", err)
42 } else if u.Name != user.Name || u.ID != user.ID {
43 t.Errorf("found invalid user, got %v, expect %v", u, user)
44 }
45
46 if u, err := gorm.G[User](DB).Select("name").Where("name = ?", user.Name).First(ctx); err != nil {
47 t.Fatalf("failed to find user, got error: %v", err)
48 } else if u.Name != user.Name || u.Age != 0 {
49 t.Errorf("found invalid user, got %v, expect %v", u, user)
50 }
51
52 if u, err := gorm.G[User](DB).Omit("name").Where("name = ?", user.Name).First(ctx); err != nil {
53 t.Fatalf("failed to find user, got error: %v", err)
54 } else if u.Name != "" || u.Age != user.Age {
55 t.Errorf("found invalid user, got %v, expect %v", u, user)
56 }
57
58 result := struct {
59 ID int
60 Name string
61 }{}
62 if err := gorm.G[User](DB).Where("name = ?", user.Name).Scan(ctx, &result); err != nil {
63 t.Fatalf("failed to scan user, got error: %v", err)
64 } else if result.Name != user.Name || uint(result.ID) != user.ID {
65 t.Errorf("found invalid user, got %v, expect %v", result, user)
66 }
67
68 mapResult, err := gorm.G[map[string]interface{}](DB).Table("users").Where("name = ?", user.Name).MapColumns(map[string]string{"name": "user_name"}).Take(ctx)
69 if v := mapResult["user_name"]; fmt.Sprint(v) != user.Name {
70 t.Errorf("failed to find map results, got %v, err %v", mapResult, err)
71 }
72
73 selectOnly := User{Name: "GenericsCreateSelectOnly", Age: 99}
74 if err := gorm.G[User](DB).Select("name").Create(ctx, &selectOnly); err != nil {
75 t.Fatalf("failed to create with Select, got error: %v", err)
76 }
77
78 if selectOnly.ID == 0 {
79 t.Fatalf("no primary key found for select-only user: %v", selectOnly)

Callers

nothing calls this directly

Calls 9

CreateMethod · 0.65
FirstMethod · 0.65
WhereMethod · 0.65
TakeMethod · 0.65
SelectMethod · 0.65
OmitMethod · 0.65
ScanMethod · 0.65
MapColumnsMethod · 0.65
TableMethod · 0.65

Tested by

no test coverage detected