forked from chuckpreslar/codex
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete_manager_test.go
More file actions
119 lines (99 loc) · 3.08 KB
/
delete_manager_test.go
File metadata and controls
119 lines (99 loc) · 3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package codex
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestDeleteManager(t *testing.T) {
relation := Table("table")
mgr := Deletion(relation)
// The following struct members should exist.
_ = mgr.Tree
// The following receiver methods should exist.
_ = mgr.Delete(1)
_, _, _ = mgr.ToSql()
}
func TestDeleteManagerLimit(t *testing.T) {
mgr := Deletion(Table("users"))
mgr.Limit(1)
sql, args, err := mgr.ToSql()
assert.Nil(t, err)
assert.Equal(t, `DELETE FROM "users" LIMIT ?`, sql)
assert.Equal(t, []interface{}{1}, args)
}
func TestDeleteManagerScope(t *testing.T) {
mgr := Deletion(Table("users"))
mgr.Scope("owner_id=?", 77)
sql, args, err := mgr.ToSql()
assert.Nil(t, err)
assert.Equal(t, `DELETE FROM "users" WHERE (owner_id=?)`, sql)
assert.Equal(t, []interface{}{77}, args)
}
func TestDeleteManagerScopeAndWhere(t *testing.T) {
users := Table("users")
mgr := Deletion(users)
mgr.Scope(users.Col("owner_id").Eq(77))
mgr.Scope(users.Col("active"))
sql, args, err := mgr.Where("id = ?", 1).ToSql()
assert.Nil(t, err)
assert.Equal(t, `DELETE FROM "users" WHERE ("users"."owner_id"=?) AND ("users"."active") AND (id = ?)`, sql)
assert.Equal(t, []interface{}{77, 1}, args)
}
func TestDeleteManagerScopeWithFunc(t *testing.T) {
users := Table("users")
mgr := Deletion(users)
scope1 := func(s Scoper) {
s.Scope(users.Col("owner_id").Eq(77))
}
scope2 := func(s Scoper) {
s.Scope(users.Col("active"))
}
mgr.Scopes(scope1, scope2)
sql, args, err := mgr.Where("id = ?", 1).ToSql()
assert.Nil(t, err)
assert.Equal(t, `DELETE FROM "users" WHERE ("users"."owner_id"=?) AND ("users"."active") AND (id = ?)`, sql)
assert.Equal(t, []interface{}{77, 1}, args)
}
func TestDeleteManagerSelection(t *testing.T) {
users := Table("users")
mgr := Deletion(users)
scope1 := func(s Scoper) {
s.Scope(users.Col("owner_id").Eq(77))
}
mgr.Scopes(scope1).Limit(1)
mgr.Where("id > ?", 2).Limit(1)
sel := mgr.Selection()
sql, args, err := sel.ToSql()
assert.Nil(t, err)
assert.Equal(t, `SELECT "users".* FROM "users" WHERE ("users"."owner_id"=?) AND (id > ?) LIMIT ?`, sql)
assert.Equal(t, []interface{}{77, 2, 1}, args)
}
func TestDeleteManagerInsertion(t *testing.T) {
users := Table("users")
mgr := Deletion(users)
scope1 := func(s Scoper) {
s.Scope(users.Col("owner_id").Eq(77))
}
mgr.Scopes(scope1).Limit(1)
mgr.Where("id > ?", 2).Limit(1)
mod := mgr.Insertion()
mod.Insert("Undo").Into("name")
sql, args, err := mod.ToSql()
assert.Nil(t, err)
assert.Equal(t, `INSERT INTO "users" ("name") VALUES (?)`, sql)
assert.Equal(t, []interface{}{"Undo"}, args)
}
func TestDeleteManagerModification(t *testing.T) {
users := Table("users")
mgr := Deletion(users)
scope1 := func(s Scoper) {
s.Scope(users.Col("owner_id").Eq(77))
}
mgr.Scopes(scope1).Limit(1)
mgr.Where("id > ?", 2).Limit(1)
mod := mgr.Modification()
mod.Set("name").To("new Name")
sql, args, err := mod.ToSql()
assert.Nil(t, err)
assert.Equal(t, `UPDATE "users" SET "name"=? WHERE ("users"."owner_id"=?) AND (id > ?) LIMIT ?`, sql)
assert.Equal(t, []interface{}{"new Name", 77, 2, 1}, args)
}