Skip to content

Commit 1a34f46

Browse files
committed
merge sql_fidder -> sql_test
1 parent 959d29c commit 1a34f46

File tree

3 files changed

+100
-120
lines changed

3 files changed

+100
-120
lines changed

sql_fiddler.go

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

sql_fiddler_test.go

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

sql_test.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
package builder
66

77
import (
8+
"fmt"
9+
"io/ioutil"
10+
"os"
811
"testing"
912

13+
"github.com/go-xorm/sqlfiddle"
1014
"github.com/stretchr/testify/assert"
1115
)
1216

@@ -59,3 +63,99 @@ func TestSQL(t *testing.T) {
5963
assert.Error(t, err)
6064
assert.EqualValues(t, ErrNotSupportType, err)
6165
}
66+
67+
type fiddler struct {
68+
sessionCode string
69+
dbType int
70+
f *sqlfiddle.Fiddle
71+
}
72+
73+
func readPreparationSQLFromFile(path string) (string, error) {
74+
file, err := os.Open(path)
75+
defer file.Close()
76+
if err != nil {
77+
return "", err
78+
}
79+
80+
data, err := ioutil.ReadAll(file)
81+
if err != nil {
82+
return "", err
83+
}
84+
85+
return string(data), nil
86+
}
87+
88+
func newFiddler(fiddleServerAddr, dbDialect, preparationSQL string) (*fiddler, error) {
89+
var dbType int
90+
switch dbDialect {
91+
case MYSQL:
92+
dbType = sqlfiddle.Mysql5_6
93+
case MSSQL:
94+
dbType = sqlfiddle.MSSQL2017
95+
case POSTGRES:
96+
dbType = sqlfiddle.PostgreSQL96
97+
case ORACLE:
98+
dbType = sqlfiddle.Oracle11gR2
99+
case SQLITE:
100+
dbType = sqlfiddle.SQLite_WebSQL
101+
default:
102+
return nil, ErrNotSupportDialectType
103+
}
104+
105+
f := sqlfiddle.NewFiddle(fiddleServerAddr)
106+
response, err := f.CreateSchema(dbType, preparationSQL)
107+
if err != nil {
108+
return nil, err
109+
}
110+
111+
return &fiddler{sessionCode: response.Code, f: f, dbType: dbType}, nil
112+
}
113+
114+
func (f *fiddler) executableCheck(obj interface{}) error {
115+
var sql string
116+
var err error
117+
switch obj.(type) {
118+
case *Builder:
119+
sql, err = obj.(*Builder).ToBindedSQL()
120+
if err != nil {
121+
return err
122+
}
123+
case string:
124+
sql = obj.(string)
125+
}
126+
127+
_, err = f.f.RunSQL(f.dbType, f.sessionCode, sql)
128+
if err != nil {
129+
return err
130+
}
131+
132+
return nil
133+
}
134+
135+
func TestReadPreparationSQLFromFile(t *testing.T) {
136+
sqlFromFile, err := readPreparationSQLFromFile("testdata/mysql_fiddle_data.sql")
137+
assert.NoError(t, err)
138+
fmt.Println(sqlFromFile)
139+
}
140+
141+
func TestNewFiddler(t *testing.T) {
142+
sqlFromFile, err := readPreparationSQLFromFile("testdata/mysql_fiddle_data.sql")
143+
assert.NoError(t, err)
144+
f, err := newFiddler("", MYSQL, sqlFromFile)
145+
assert.NoError(t, err)
146+
assert.NotEmpty(t, f.sessionCode)
147+
}
148+
149+
func TestExecutableCheck(t *testing.T) {
150+
sqlFromFile, err := readPreparationSQLFromFile("testdata/mysql_fiddle_data.sql")
151+
assert.NoError(t, err)
152+
f, err := newFiddler("", MYSQL, sqlFromFile)
153+
assert.NoError(t, err)
154+
assert.NotEmpty(t, f.sessionCode)
155+
156+
assert.NoError(t, f.executableCheck("SELECT * FROM table1"))
157+
158+
err = f.executableCheck("SELECT * FROM table3")
159+
assert.Error(t, err)
160+
fmt.Println(err)
161+
}

0 commit comments

Comments
 (0)