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

Function TestNamedArg

tests/named_argument_test.go:12–82  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestNamedArg(t *testing.T) {
13 type NamedUser struct {
14 gorm.Model
15 Name1 string
16 Name2 string
17 Name3 string
18 }
19
20 DB.Migrator().DropTable(&NamedUser{})
21 DB.AutoMigrate(&NamedUser{})
22
23 namedUser := NamedUser{Name1: "jinzhu1", Name2: "jinzhu2", Name3: "jinzhu3"}
24 DB.Create(&namedUser)
25
26 var result NamedUser
27 DB.First(&result, "name1 = @name OR name2 = @name OR name3 = @name", sql.Named("name", "jinzhu2"))
28
29 AssertEqual(t, result, namedUser)
30
31 var result2 NamedUser
32 DB.Where("name1 = @name OR name2 = @name OR name3 = @name", sql.Named("name", "jinzhu2")).First(&result2)
33
34 AssertEqual(t, result2, namedUser)
35
36 var result3 NamedUser
37 DB.Where("name1 = @name OR name2 = @name OR name3 = @name", map[string]interface{}{"name": "jinzhu2"}).First(&result3)
38
39 AssertEqual(t, result3, namedUser)
40
41 var result4 NamedUser
42 if err := DB.Raw("SELECT * FROM named_users WHERE name1 = @name OR name2 = @name2 OR name3 = @name", sql.Named("name", "jinzhu-none"), sql.Named("name2", "jinzhu2")).Find(&result4).Error; err != nil {
43 t.Errorf("failed to update with named arg")
44 }
45
46 AssertEqual(t, result4, namedUser)
47
48 if err := DB.Exec("UPDATE named_users SET name1 = @name, name2 = @name2, name3 = @name", sql.Named("name", "jinzhu-new"), sql.Named("name2", "jinzhu-new2")).Error; err != nil {
49 t.Errorf("failed to update with named arg")
50 }
51
52 namedUser.Name1 = "jinzhu-new"
53 namedUser.Name2 = "jinzhu-new2"
54 namedUser.Name3 = "jinzhu-new"
55
56 var result5 NamedUser
57 if err := DB.Raw("SELECT * FROM named_users WHERE (name1 = @name AND name3 = @name) AND name2 = @name2", map[string]interface{}{"name": "jinzhu-new", "name2": "jinzhu-new2"}).Find(&result5).Error; err != nil {
58 t.Errorf("failed to update with named arg")
59 }
60
61 AssertEqual(t, result5, namedUser)
62
63 var result6 NamedUser
64 if err := DB.Raw(`SELECT * FROM named_users WHERE (name1 = @name
65 AND name3 = @name) AND name2 = @name2`, map[string]interface{}{"name": "jinzhu-new", "name2": "jinzhu-new2"}).Find(&result6).Error; err != nil {
66 t.Errorf("failed to update with named arg")
67 }
68
69 AssertEqual(t, result6, namedUser)

Callers

nothing calls this directly

Calls 11

DropTableMethod · 0.65
MigratorMethod · 0.65
AutoMigrateMethod · 0.65
CreateMethod · 0.65
FirstMethod · 0.65
WhereMethod · 0.65
FindMethod · 0.65
RawMethod · 0.65
ExecMethod · 0.65
DeleteMethod · 0.65
AssertEqualFunction · 0.50

Tested by

no test coverage detected