Skip to content

Commit 2133482

Browse files
committed
增加postgres gobatis-cmd测试用例
1 parent c177078 commit 2133482

File tree

9 files changed

+278
-256
lines changed

9 files changed

+278
-256
lines changed

parsing/template/dynamic.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ func postgresUpdateSet(b bool, column string, value interface{}, origin string)
6262
buf.WriteString(",")
6363
}
6464
}
65+
buf.WriteString(`"`)
6566
buf.WriteString(column)
67+
buf.WriteString(`"`)
6668
buf.WriteString(" = ")
6769
if s, ok := value.(string); ok {
6870
buf.WriteString(`'`)
@@ -119,7 +121,9 @@ func postgresWhere(b bool, cond, column string, value interface{}, origin string
119121
buf.WriteString(" ")
120122
}
121123

124+
buf.WriteString(`"`)
122125
buf.WriteString(column)
126+
buf.WriteString(`"`)
123127
buf.WriteString(" = ")
124128
if s, ok := value.(string); ok {
125129
buf.WriteString(`'`)

session/default_session.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (sess *DefaultSqlSession) Insert(ctx context.Context, sql string, params ..
5858

5959
id, err := ret.LastInsertId()
6060
if err != nil {
61-
return 0, -1, err
61+
return count, id, err
6262
}
6363
return count, id, nil
6464
}

test/cmd/cmd_test.go

Lines changed: 0 additions & 128 deletions
This file was deleted.

test/cmd/pg_cmd_test.go

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
/**
2+
* Copyright (C) 2019, Xiongfa Li.
3+
* All right reserved.
4+
* @author xiongfa.li
5+
* @version V1.0
6+
* Description:
7+
*/
8+
9+
package test_package
10+
11+
import (
12+
"errors"
13+
_ "github.com/lib/pq"
14+
"github.com/xfali/gobatis"
15+
"github.com/xfali/gobatis/datasource"
16+
"testing"
17+
"time"
18+
)
19+
20+
var sessionMgr *gobatis.SessionManager
21+
22+
func init() {
23+
fac := gobatis.NewFactory(
24+
gobatis.SetMaxConn(100),
25+
gobatis.SetMaxIdleConn(50),
26+
gobatis.SetDataSource(&datasource.PostgreDataSource{
27+
Host: "localhost",
28+
Port: 5432,
29+
DBName: "testdb",
30+
Username: "test",
31+
Password: "test",
32+
}))
33+
sessionMgr = gobatis.NewSessionManager(fac)
34+
}
35+
36+
func TestSelect(t *testing.T) {
37+
ret, err := SelectTestTable(sessionMgr.NewSession(), TestTable{Username: "test_user"})
38+
39+
if err != nil {
40+
t.Fatal(err)
41+
}
42+
43+
for _, v := range ret {
44+
t.Logf("value: %v", v)
45+
}
46+
}
47+
48+
func TestSelectCount(t *testing.T) {
49+
//all count
50+
ret, err := SelectTestTableCount(sessionMgr.NewSession(), TestTable{})
51+
if err != nil {
52+
t.Fatal(err)
53+
}
54+
t.Logf("count is %d", ret)
55+
}
56+
57+
func TestInsert(t *testing.T) {
58+
ret, id, err := InsertTestTable(sessionMgr.NewSession(), TestTable{Username: "test_insert_user", Password: "test_pw"})
59+
if err != nil {
60+
t.Log(err)
61+
}
62+
t.Logf("insert ret is %d, id is %d", ret, id)
63+
}
64+
65+
func TestUpdate(t *testing.T) {
66+
ret, err := UpdateTestTable(sessionMgr.NewSession(), TestTable{Id: 1, Username: "test_insert_user", Password: "update_pw"})
67+
if err != nil {
68+
t.Fatal(err)
69+
}
70+
t.Logf("update ret is %d", ret)
71+
}
72+
73+
func TestDelete(t *testing.T) {
74+
//Same as: DELETE FROM test_table WHERE username = 'test_insert_user'
75+
ret, err := DeleteTestTable(sessionMgr.NewSession(), TestTable{Username: "test_insert_user"})
76+
if err != nil {
77+
t.Fatal(err)
78+
}
79+
t.Logf("delete ret is %d", ret)
80+
}
81+
82+
func TestSessionTpl(t *testing.T) {
83+
gobatis.RegisterTemplateFile("./template/test_table_mapper.tmpl")
84+
var param = TestTable{Id: 1, Username: "user", Password: "pw"}
85+
t.Run("select", func(t *testing.T) {
86+
sess := sessionMgr.NewSession()
87+
var ret []TestTable
88+
sess.Select("selectTestTable").Param(TestTable{}).Result(&ret)
89+
t.Log(ret)
90+
})
91+
92+
t.Run("insert", func(t *testing.T) {
93+
sess := sessionMgr.NewSession()
94+
var ret int
95+
err := sess.Insert("insertTestTable").Param(param).Result(&ret)
96+
t.Log(err)
97+
t.Log(ret)
98+
})
99+
100+
t.Run("update", func(t *testing.T) {
101+
sess := sessionMgr.NewSession()
102+
var ret int
103+
err := sess.Update("updateTestTable").Param(TestTable{Id: 1, Username: "user2", Password: "pw2"}).Result(&ret)
104+
t.Log(err)
105+
t.Log(ret)
106+
})
107+
108+
t.Run("delete", func(t *testing.T) {
109+
sess := sessionMgr.NewSession()
110+
var ret int
111+
sess.Delete("deleteTestTable").Param(TestTable{Id: 1}).Result(&ret)
112+
t.Log(ret)
113+
})
114+
}
115+
116+
func TestSessionXml(t *testing.T) {
117+
gobatis.RegisterMapperFile("./xml/test_table_mapper.xml")
118+
var param = TestTable{Id: 1, Username: "user", Password: "pw", Createtime: time.Now()}
119+
t.Run("select", func(t *testing.T) {
120+
sess := sessionMgr.NewSession()
121+
var ret []TestTable
122+
sess.Select("selectTestTable").Param(param).Result(&ret)
123+
t.Log(ret)
124+
})
125+
126+
t.Run("insert", func(t *testing.T) {
127+
sess := sessionMgr.NewSession()
128+
var ret int
129+
err := sess.Insert("insertTestTable").Param(param).Result(&ret)
130+
t.Log(err)
131+
t.Log(ret)
132+
})
133+
134+
t.Run("update", func(t *testing.T) {
135+
sess := sessionMgr.NewSession()
136+
var ret int
137+
err := sess.Update("updateTestTable").Param(TestTable{Id: 1, Username: "user2", Password: "pw2"}).Result(&ret)
138+
t.Log(err)
139+
t.Log(ret)
140+
})
141+
142+
t.Run("delete", func(t *testing.T) {
143+
sess := sessionMgr.NewSession()
144+
var ret int
145+
sess.Delete("deleteTestTable").Param(TestTable{Id: 1}).Result(&ret)
146+
t.Log(ret)
147+
})
148+
}
149+
150+
func TestTxSuccess(t *testing.T) {
151+
sessionMgr.NewSession().Tx(func(s *gobatis.Session) error {
152+
_, _, err := InsertTestTable(s, TestTable{Username: "tx_user", Password: "tx_pw"})
153+
t.Log(err)
154+
//select all
155+
ret, err := SelectTestTable(s, TestTable{})
156+
if err != nil {
157+
t.Fatal(err)
158+
}
159+
for _, v := range ret {
160+
t.Logf("value: %v", v)
161+
}
162+
//will commit
163+
return nil
164+
})
165+
166+
//select all
167+
ret, _ := SelectTestTable(sessionMgr.NewSession(), TestTable{Username: "tx_user"})
168+
169+
for _, v := range ret {
170+
t.Logf("value: %v", v)
171+
}
172+
}
173+
174+
func TestTxFail(t *testing.T) {
175+
sessionMgr.NewSession().Tx(func(s *gobatis.Session) error {
176+
_, _, err := InsertTestTable(s, TestTable{Username: "tx_user", Password: "tx_pw"})
177+
t.Log(err)
178+
//select all
179+
ret, err := SelectTestTable(s, TestTable{})
180+
if err != nil {
181+
t.Fatal(err)
182+
}
183+
for _, v := range ret {
184+
t.Logf("value: %v", v)
185+
}
186+
//will commit
187+
return errors.New("rollback")
188+
})
189+
190+
//select all
191+
ret, _ := SelectTestTable(sessionMgr.NewSession(), TestTable{Username: "tx_user"})
192+
193+
for _, v := range ret {
194+
t.Logf("value: %v", v)
195+
}
196+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{{define "selectTestTable"}}
2+
SELECT "id","username","password","createtime" FROM "test_table"
3+
{{where (ne .Id 0) "AND" "id" .Id "" | where (ne .Username "") "AND" "username" .Username | where (ne .Password "") "AND" "password" .Password | where (ne .Createtime ) "AND" "createtime" .Createtime}}
4+
{{end}}
5+
6+
{{define "insertTestTable"}}
7+
INSERT INTO "test_table"("id","username","password","createtime")
8+
VALUES(
9+
{{.Id}}, '{{.Username}}', '{{.Password}}', {{.Createtime}})
10+
RETURNING ID
11+
{{end}}
12+
13+
{{define "updateTestTable"}}
14+
UPDATE "test_table"
15+
{{set (ne .Id 0) "id" .Id "" | set (ne .Username "") "username" .Username | set (ne .Password "") "password" .Password | set (ne .Createtime ) "createtime" .Createtime}}
16+
{{where (ne .Id 0) "AND" "id" .Id ""}}
17+
{{end}}
18+
19+
{{define "deleteTestTable"}}
20+
DELETE FROM "test_table"
21+
{{where (ne .Id 0) "AND" "id" .Id "" | where (ne .Username "") "AND" "username" .Username | where (ne .Password "") "AND" "password" .Password | where (ne .Createtime ) "AND" "createtime" .Createtime}}
22+
{{end}}
23+

test/cmd/test_table.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)