This commit is contained in:
Lunny Xiao 2020-03-08 14:34:43 +08:00
parent 7495ca7297
commit 2d194e4b63
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
5 changed files with 29 additions and 32 deletions

View File

@ -3,38 +3,9 @@ package dialects
import ( import (
"testing" "testing"
"xorm.io/xorm/schemas"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestQuoteFilter_Do(t *testing.T) {
f := QuoteFilter{schemas.Quoter{'[', ']', schemas.AlwaysReserve}}
var kases = []struct {
source string
expected string
}{
{
"SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ?",
"SELECT [COLUMN_NAME] FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_SCHEMA] = ? AND [TABLE_NAME] = ? AND [COLUMN_NAME] = ?",
},
{
"SELECT 'abc```test```''', `a` FROM b",
"SELECT 'abc```test```''', [a] FROM b",
},
{
"UPDATE table SET `a` = ~ `a`, `b`='abc`'",
"UPDATE table SET [a] = ~ [a], [b]='abc`'",
},
}
for _, kase := range kases {
t.Run(kase.source, func(t *testing.T) {
assert.EqualValues(t, kase.expected, f.Do(kase.source))
})
}
}
func TestSeqFilter(t *testing.T) { func TestSeqFilter(t *testing.T) {
var kases = map[string]string{ var kases = map[string]string{
"SELECT * FROM TABLE1 WHERE a=? AND b=?": "SELECT * FROM TABLE1 WHERE a=$1 AND b=$2", "SELECT * FROM TABLE1 WHERE a=? AND b=?": "SELECT * FROM TABLE1 WHERE a=$1 AND b=$2",

View File

@ -525,7 +525,7 @@ func (db *mssql) ForUpdateSQL(query string) string {
} }
func (db *mssql) Filters() []Filter { func (db *mssql) Filters() []Filter {
return []Filter{ /*&QuoteFilter{db.Quoter()}*/ } return []Filter{}
} }
type odbcDriver struct { type odbcDriver struct {

View File

@ -793,7 +793,6 @@ func (db *oracle) GetIndexes(ctx context.Context, tableName string) (map[string]
func (db *oracle) Filters() []Filter { func (db *oracle) Filters() []Filter {
return []Filter{ return []Filter{
/*&QuoteFilter{db.Quoter()},*/
&SeqFilter{Prefix: ":", Start: 1}, &SeqFilter{Prefix: ":", Start: 1},
} }
} }

View File

@ -1231,7 +1231,7 @@ func (db *postgres) GetIndexes(ctx context.Context, tableName string) (map[strin
} }
func (db *postgres) Filters() []Filter { func (db *postgres) Filters() []Filter {
return []Filter{ /*&QuoteFilter{db.Quoter()}, */ &SeqFilter{Prefix: "$", Start: 1}} return []Filter{&SeqFilter{Prefix: "$", Start: 1}}
} }
type pqDriver struct { type pqDriver struct {

View File

@ -146,3 +146,30 @@ func TestTrim(t *testing.T) {
assert.EqualValues(t, dst, Quoter{'[', ']', AlwaysReserve}.Trim(src)) assert.EqualValues(t, dst, Quoter{'[', ']', AlwaysReserve}.Trim(src))
} }
} }
func TestReplace(t *testing.T) {
q := Quoter{'[', ']', AlwaysReserve}
var kases = []struct {
source string
expected string
}{
{
"SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ?",
"SELECT [COLUMN_NAME] FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_SCHEMA] = ? AND [TABLE_NAME] = ? AND [COLUMN_NAME] = ?",
},
{
"SELECT 'abc```test```''', `a` FROM b",
"SELECT 'abc```test```''', [a] FROM b",
},
{
"UPDATE table SET `a` = ~ `a`, `b`='abc`'",
"UPDATE table SET [a] = ~ [a], [b]='abc`'",
},
}
for _, kase := range kases {
t.Run(kase.source, func(t *testing.T) {
assert.EqualValues(t, kase.expected, q.Replace(kase.source))
})
}
}