forked from gobuffalo/pop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
executors_test.go
124 lines (95 loc) · 2.4 KB
/
executors_test.go
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
120
121
122
123
124
package pop_test
import (
"testing"
"github.com/markbates/going/nulls"
"github.com/markbates/pop"
"github.com/stretchr/testify/require"
)
func Test_Exec(t *testing.T) {
transaction(func(tx *pop.Connection) {
a := require.New(t)
user := User{Name: nulls.NewString("Mark 'Awesome' Bates")}
tx.Create(&user)
ctx, _ := tx.Count(user)
a.Equal(1, ctx)
q := tx.RawQuery("delete from users where id = ?", user.ID)
err := q.Exec()
a.NoError(err)
ctx, _ = tx.Count(user)
a.Equal(0, ctx)
})
}
func Test_Save(t *testing.T) {
r := require.New(t)
transaction(func(tx *pop.Connection) {
u := &User{Name: nulls.NewString("Mark")}
r.Zero(u.ID)
tx.Save(u)
r.NotZero(u.ID)
uat := u.UpdatedAt.UnixNano()
tx.Save(u)
r.NotEqual(uat, u.UpdatedAt.UnixNano())
})
}
func Test_Create(t *testing.T) {
transaction(func(tx *pop.Connection) {
a := require.New(t)
count, _ := tx.Count(&User{})
user := User{Name: nulls.NewString("Mark 'Awesome' Bates")}
err := tx.Create(&user)
a.NoError(err)
a.NotEqual(user.ID, 0)
ctx, _ := tx.Count(&User{})
a.Equal(count+1, ctx)
u := User{}
q := tx.Where("name = ?", "Mark 'Awesome' Bates")
err = q.First(&u)
a.NoError(err)
a.Equal(user.Name.String, "Mark 'Awesome' Bates")
})
}
func Test_Create_Timestamps(t *testing.T) {
transaction(func(tx *pop.Connection) {
a := require.New(t)
user := User{Name: nulls.NewString("Mark 'Awesome' Bates")}
a.Zero(user.CreatedAt)
a.Zero(user.UpdatedAt)
err := tx.Create(&user)
a.NoError(err)
a.NotZero(user.CreatedAt)
a.NotZero(user.UpdatedAt)
friend := Friend{FirstName: "Ross", LastName: "Gellar"}
err = tx.Create(&friend)
a.NoError(err)
})
}
func Test_Update(t *testing.T) {
transaction(func(tx *pop.Connection) {
a := require.New(t)
user := User{Name: nulls.NewString("Mark")}
tx.Create(&user)
a.NotZero(user.CreatedAt)
a.NotZero(user.UpdatedAt)
user.Name.String = "Marky"
err := tx.Update(&user)
a.NoError(err)
tx.Reload(&user)
a.Equal(user.Name.String, "Marky")
})
}
func Test_Destroy(t *testing.T) {
transaction(func(tx *pop.Connection) {
a := require.New(t)
count, err := tx.Count("users")
user := User{Name: nulls.NewString("Mark")}
err = tx.Create(&user)
a.NoError(err)
a.NotEqual(user.ID, 0)
ctx, err := tx.Count("users")
a.Equal(count+1, ctx)
err = tx.Destroy(&user)
a.NoError(err)
ctx, _ = tx.Count("users")
a.Equal(count, ctx)
})
}