-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathconnection_test.go
executable file
·150 lines (124 loc) · 3.12 KB
/
connection_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
package torm
import (
"testing"
"time"
_ "github.com/thinkoner/torm/driver/mysql"
_ "github.com/thinkoner/torm/driver/sqlite"
)
var DB *Connection
func init() {
DB = initDb()
}
func initDb() *Connection {
dsn := "root:@tcp(127.0.0.1:3306)/"
driver := "mysql"
db, err := Open(Config{
Driver: driver,
Dsn: dsn + "?charset=utf8&parseTime=true",
})
if err != nil {
panic(err)
}
err = db.Statement(`CREATE DATABASE IF NOT EXISTS torm_test`)
if err != nil {
panic(err)
}
db, err = Open(Config{
Driver: driver,
Dsn: dsn + "torm_test?charset=utf8&parseTime=true",
})
if err != nil {
panic(err)
}
db.Statement(`DROP TABLE IF EXISTS users;`)
db.Statement(`
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
gender varchar(255) DEFAULT NULL,
addr varchar(255) DEFAULT NULL,
birth_date date DEFAULT NULL,
balance decimal(15,4) DEFAULT '0.0000',
created_at timestamp NULL DEFAULT NULL,
updated_at timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
`)
return db
}
type User struct {
Id int64 `torm:"primary_key;column:id"`
Name string `torm:"column:name"`
Gender string `torm:"column:gender"`
Addr string
BirthDate string
Balance float64
CreatedAt time.Time
UpdatedAt time.Time
}
func (u *User) TableName() string {
return "users"
}
func TestConnection_SelectOne(t *testing.T) {
var user User
_, _, err := DB.Insert("insert into users (name, gender) values (?, ?)", "Andrew", "M")
if err != nil {
t.Error(err)
}
err = DB.SelectOne("select * from users where gender = ?", []interface{}{"M"}, &user)
if err != nil {
t.Error(err)
}
if user.Gender != "M" {
t.Error("Expect: user's gender should be ", "M")
}
if user.Name != "Andrew" {
t.Error("Expect: user's name should be ", "Andrew")
}
}
func TestConnection_Select(t *testing.T) {
var users []User
DB.Insert("insert into users (name, gender) values (?, ?)", "Andrew", "M")
DB.Insert("insert into users (name, gender) values (?, ?)", "Boston", "M")
err := DB.Select("select * from users where gender = ?", []interface{}{"M"}, &users)
if err != nil {
t.Error(err)
}
if len(users) < 1 {
t.Error("Expect: user's length should > 1 ")
}
for _, user := range users {
if user.Gender != "M" {
t.Error("Expect: user's gender should be ", "M")
}
}
}
func TestConnection_Insert(t *testing.T) {
insertId, _, err := DB.Insert("insert into users (name, gender) values (?, ?)", "Alaska", "F")
if err != nil {
t.Error(err)
}
if insertId < 0 {
t.Error("Expect: insertId should > 0 after insert")
}
}
func TestConnection_Update(t *testing.T) {
id, _, err := DB.Insert("insert into users (name, gender) values (?, ?)", "Chicago", "M")
if err != nil {
t.Error(err)
}
_, err = DB.Update("update users set gender = ? where id = ?", "M", id)
if err != nil {
t.Error(err)
}
}
func TestConnection_Delete(t *testing.T) {
id, _, err := DB.Insert("insert into users (name, gender) values (?, ?)", "Columbia", "F")
if err != nil {
t.Error(err)
}
_, err = DB.Delete("delete from users where id = ?", id)
if err != nil {
t.Error(err)
}
}