Additional unit tests.
This commit is contained in:
parent
e431f3ecb1
commit
e74e090b0a
4 changed files with 144 additions and 1 deletions
|
|
@ -246,7 +246,7 @@ func argToString(value interface{}) string {
|
|||
case time.Time:
|
||||
return stringQuote(string(utils.FormatTimestamp(bindVal)))
|
||||
default:
|
||||
return "[Unknown type]"
|
||||
return "[Unsupported type]"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
33
clause_test.go
Normal file
33
clause_test.go
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
package jet
|
||||
|
||||
import (
|
||||
"github.com/google/uuid"
|
||||
"gotest.tools/assert"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestArgToString(t *testing.T) {
|
||||
assert.Equal(t, argToString(true), "TRUE")
|
||||
assert.Equal(t, argToString(false), "FALSE")
|
||||
|
||||
assert.Equal(t, argToString(int8(-8)), "-8")
|
||||
assert.Equal(t, argToString(int16(-16)), "-16")
|
||||
assert.Equal(t, argToString(int(-32)), "-32")
|
||||
assert.Equal(t, argToString(int32(-32)), "-32")
|
||||
assert.Equal(t, argToString(int64(-64)), "-64")
|
||||
assert.Equal(t, argToString(uint8(8)), "8")
|
||||
assert.Equal(t, argToString(uint16(16)), "16")
|
||||
assert.Equal(t, argToString(uint(32)), "32")
|
||||
assert.Equal(t, argToString(uint32(32)), "32")
|
||||
assert.Equal(t, argToString(uint64(64)), "64")
|
||||
|
||||
assert.Equal(t, argToString("john"), "'john'")
|
||||
assert.Equal(t, argToString([]byte("john")), "'john'")
|
||||
assert.Equal(t, argToString(uuid.MustParse("b68dbff4-a87d-11e9-a7f2-98ded00c39c6")), "'b68dbff4-a87d-11e9-a7f2-98ded00c39c6'")
|
||||
|
||||
time, err := time.Parse("Mon Jan 2 15:04:05 -0700 MST 2006", "Mon Jan 2 15:04:05 -0700 MST 2006")
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, argToString(time), "'2006-01-02 15:04:05-07:00'")
|
||||
assert.Equal(t, argToString(map[string]bool{}), "[Unsupported type]")
|
||||
}
|
||||
|
|
@ -122,3 +122,91 @@ FROM db.table1
|
|||
FOR NO KEY UPDATE SKIP LOCKED;
|
||||
`)
|
||||
}
|
||||
|
||||
func TestSelectSets(t *testing.T) {
|
||||
select1 := SELECT(table1ColBool).FROM(table1)
|
||||
select2 := SELECT(table2ColBool).FROM(table2)
|
||||
|
||||
assertStatement(t, select1.UNION(select2), `
|
||||
(
|
||||
(
|
||||
SELECT table1.col_bool AS "table1.col_bool"
|
||||
FROM db.table1
|
||||
)
|
||||
UNION
|
||||
(
|
||||
SELECT table2.col_bool AS "table2.col_bool"
|
||||
FROM db.table2
|
||||
)
|
||||
);
|
||||
`)
|
||||
assertStatement(t, select1.UNION_ALL(select2), `
|
||||
(
|
||||
(
|
||||
SELECT table1.col_bool AS "table1.col_bool"
|
||||
FROM db.table1
|
||||
)
|
||||
UNION ALL
|
||||
(
|
||||
SELECT table2.col_bool AS "table2.col_bool"
|
||||
FROM db.table2
|
||||
)
|
||||
);
|
||||
`)
|
||||
|
||||
assertStatement(t, select1.INTERSECT(select2), `
|
||||
(
|
||||
(
|
||||
SELECT table1.col_bool AS "table1.col_bool"
|
||||
FROM db.table1
|
||||
)
|
||||
INTERSECT
|
||||
(
|
||||
SELECT table2.col_bool AS "table2.col_bool"
|
||||
FROM db.table2
|
||||
)
|
||||
);
|
||||
`)
|
||||
|
||||
assertStatement(t, select1.INTERSECT_ALL(select2), `
|
||||
(
|
||||
(
|
||||
SELECT table1.col_bool AS "table1.col_bool"
|
||||
FROM db.table1
|
||||
)
|
||||
INTERSECT ALL
|
||||
(
|
||||
SELECT table2.col_bool AS "table2.col_bool"
|
||||
FROM db.table2
|
||||
)
|
||||
);
|
||||
`)
|
||||
assertStatement(t, select1.EXCEPT(select2), `
|
||||
(
|
||||
(
|
||||
SELECT table1.col_bool AS "table1.col_bool"
|
||||
FROM db.table1
|
||||
)
|
||||
EXCEPT
|
||||
(
|
||||
SELECT table2.col_bool AS "table2.col_bool"
|
||||
FROM db.table2
|
||||
)
|
||||
);
|
||||
`)
|
||||
|
||||
assertStatement(t, select1.EXCEPT_ALL(select2), `
|
||||
(
|
||||
(
|
||||
SELECT table1.col_bool AS "table1.col_bool"
|
||||
FROM db.table1
|
||||
)
|
||||
EXCEPT ALL
|
||||
(
|
||||
SELECT table2.col_bool AS "table2.col_bool"
|
||||
FROM db.table2
|
||||
)
|
||||
);
|
||||
`)
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,6 +109,28 @@ INSERT INTO test_sample.link (url, name) VALUES
|
|||
assertExec(t, query, 1)
|
||||
}
|
||||
|
||||
func TestInsertModelObjectEmptyColumnList(t *testing.T) {
|
||||
cleanUpLinkTable(t)
|
||||
var expectedSQL = `
|
||||
INSERT INTO test_sample.link VALUES
|
||||
(1000, 'http://www.duckduckgo.com', 'Duck Duck go', NULL);
|
||||
`
|
||||
|
||||
linkData := model.Link{
|
||||
ID: 1000,
|
||||
URL: "http://www.duckduckgo.com",
|
||||
Name: "Duck Duck go",
|
||||
}
|
||||
|
||||
query := Link.
|
||||
INSERT().
|
||||
MODEL(linkData)
|
||||
|
||||
assertStatementSql(t, query, expectedSQL, int32(1000), "http://www.duckduckgo.com", "Duck Duck go", nil)
|
||||
|
||||
assertExec(t, query, 1)
|
||||
}
|
||||
|
||||
func TestInsertModelsObject(t *testing.T) {
|
||||
expectedSQL := `
|
||||
INSERT INTO test_sample.link (url, name) VALUES
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue