forked from RichardKnop/go-oauth2-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsql_test.go
152 lines (117 loc) · 3.1 KB
/
sql_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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package util_test
import (
"database/sql"
"database/sql/driver"
"testing"
"time"
"go-oauth2-server/util"
"github.com/lib/pq"
"github.com/stretchr/testify/assert"
)
func TestIntOrNull(t *testing.T) {
nullInt := util.PositiveIntOrNull(1)
assert.True(t, nullInt.Valid)
value, err := nullInt.Value()
assert.Nil(t, err)
assert.Equal(t, int64(1), value)
}
func TestPositiveIntOrNull(t *testing.T) {
var (
nullInt sql.NullInt64
value driver.Value
err error
)
// When the number is negative
nullInt = util.PositiveIntOrNull(-1)
// nullInt.Valid should be false
assert.False(t, nullInt.Valid)
// nullInt.Value() should return nil
value, err = nullInt.Value()
assert.Nil(t, err)
assert.Nil(t, value)
// When the number is greater than zero
nullInt = util.PositiveIntOrNull(1)
// nullInt.Valid should be true
assert.True(t, nullInt.Valid)
// nullInt.Value() should return the integer
value, err = nullInt.Value()
assert.Nil(t, err)
assert.Equal(t, int64(1), value)
}
func TestFloatOrNull(t *testing.T) {
nullFloat := util.FloatOrNull(1.5)
assert.True(t, nullFloat.Valid)
value, err := nullFloat.Value()
assert.Nil(t, err)
assert.Equal(t, 1.5, value)
}
func TestPositiveFloatOrNull(t *testing.T) {
var (
nullFloat sql.NullFloat64
value driver.Value
err error
)
// When the number is negative
nullFloat = util.PositiveFloatOrNull(-0.5)
// nullFloat.Valid should be false
assert.False(t, nullFloat.Valid)
// nullFloat.Value() should return nil
value, err = nullFloat.Value()
assert.Nil(t, err)
assert.Nil(t, value)
// When the number is greater than zero
nullFloat = util.PositiveFloatOrNull(1.5)
// nullFloat.Valid should be true
assert.True(t, nullFloat.Valid)
// nullFloat.Value() should return the integer
value, err = nullFloat.Value()
assert.Nil(t, err)
assert.Equal(t, 1.5, value)
}
func TestStringOrNull(t *testing.T) {
var (
nullString sql.NullString
value driver.Value
err error
)
// When the string is empty
nullString = util.StringOrNull("")
// nullString.Valid should be false
assert.False(t, nullString.Valid)
// nullString.Value() should return nil
value, err = nullString.Value()
assert.Nil(t, err)
assert.Nil(t, value)
// When the string is not empty
nullString = util.StringOrNull("foo")
// nullString.Valid should be true
assert.True(t, nullString.Valid)
// nullString.Value() should return the string
value, err = nullString.Value()
assert.Nil(t, err)
assert.Equal(t, "foo", value)
}
func TestTimeOrNull(t *testing.T) {
var (
nullTime pq.NullTime
value driver.Value
err error
)
// When the time is nil
nullTime = util.TimeOrNull(nil)
// nullTime.Valid should be false
assert.False(t, nullTime.Valid)
// nullInt.Value() should return nil
value, err = nullTime.Value()
assert.Nil(t, err)
assert.Nil(t, value)
// When the time is time.Time instance
now := time.Now()
nullTime = util.TimeOrNull(&now)
// nullTime.Valid should be true
assert.True(t, nullTime.Valid)
// nullTime.Value() should return the time.Time
value, err = nullTime.Value()
assert.Nil(t, err)
assert.Equal(t, now, value)
}