Skip to content

Commit cddd7d3

Browse files
author
Nicola Strappazzon C
committed
feat - add mysql tests
1 parent e7436d4 commit cddd7d3

File tree

4 files changed

+78
-1
lines changed

4 files changed

+78
-1
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Test binary, build with `go test -c`
2+
*.test
3+
4+
# MAC OS X
5+
.DS_Store

log/main.go

+11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ type Fields map[string]interface{}
88

99
type Level uint32
1010

11+
type Formatter struct {
12+
logrus.TextFormatter
13+
}
14+
1115
const (
1216
PanicLevel Level = iota
1317
FatalLevel
@@ -18,6 +22,13 @@ const (
1822
TraceLevel
1923
)
2024

25+
func UseTimestamp() {
26+
logrus.SetFormatter(&Formatter{logrus.TextFormatter{
27+
FullTimestamp: true,
28+
TimestampFormat: "2006-01-02 15:04:05",
29+
}})
30+
}
31+
2132
func SetLevel(level Level) {
2233
logrus.SetLevel(logrus.Level(level))
2334
}

mysql/main.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package mysql
22

33
import (
4+
"bytes"
45
"database/sql"
56
"errors"
67

@@ -116,7 +117,15 @@ func (c *Connection) FetchBool(query string) bool {
116117
return false
117118
}
118119

119-
return true
120+
if bytes.Equal(r.([]byte), []byte{48}) {
121+
return false
122+
}
123+
124+
if bytes.Equal(r.([]byte), []byte{49}) {
125+
return true
126+
}
127+
128+
return false
120129
}
121130

122131
func (c *Connection) FetchOne(query string) any {

mysql/main_test.go

+52
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package mysql_test
22

33
import (
4+
"fmt"
45
"os"
56
"testing"
67

@@ -29,6 +30,57 @@ func TestGet(t *testing.T) {
2930
assert.NotEmpty(t, c.Instance, nil)
3031
}
3132

33+
func TestFetchOne(t *testing.T) {
34+
var r any
35+
c := mysql.Get("test")
36+
37+
r = c.FetchOne("SELECT 'foo' AS one;")
38+
assert.NotEmpty(t, r, nil)
39+
assert.Equal(t, fmt.Sprintf("%s", r), "foo")
40+
41+
r = c.FetchOne("SELECT 'foo' AS one, 'bar' AS two;")
42+
assert.Empty(t, r, nil)
43+
44+
r = c.FetchOne("SELECT 'foo' AS one UNION SELECT 'bar';")
45+
assert.Equal(t, fmt.Sprintf("%s", r), "foo")
46+
}
47+
48+
func TestFetchBool(t *testing.T) {
49+
var r bool
50+
c := mysql.Get("test")
51+
r = c.FetchBool("SELECT true;")
52+
assert.True(t, r)
53+
54+
r = c.FetchBool("SELECT false;")
55+
assert.False(t, r)
56+
57+
r = c.FetchBool("SELECT 0;")
58+
assert.False(t, r)
59+
60+
r = c.FetchBool("SELECT 1;")
61+
assert.True(t, r)
62+
63+
r = c.FetchBool("SELECT null;")
64+
assert.False(t, r)
65+
}
66+
67+
func TestFetchAll(t *testing.T) {
68+
count := 0
69+
rows := []map[string]string{
70+
{"c1": "a", "c2": "0"},
71+
{"c1": "b", "c2": "1"},
72+
{"c1": "c", "c2": "2"},
73+
}
74+
75+
c := mysql.Get("test")
76+
c.FetchAll("SELECT 'a' AS c1, 0 AS c2 UNION SELECT 'b', 1 UNION SELECT 'c', 2;", func(r map[string]string) {
77+
assert.Equal(t, r, rows[count])
78+
count++
79+
})
80+
81+
assert.Equal(t, count, len(rows))
82+
}
83+
3284
func TestClose(t *testing.T) {
3385
c := mysql.Get("test")
3486
assert.NotEmpty(t, c.Instance, nil)

0 commit comments

Comments
 (0)