mirror of
https://github.com/chaisql/chai.git
synced 2025-10-06 08:06:55 +08:00
Move tests to query package
This commit is contained in:
76
query/create_test.go
Normal file
76
query/create_test.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package query_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/asdine/genji"
|
||||
"github.com/asdine/genji/database"
|
||||
"github.com/asdine/genji/engine/memoryengine"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestCreateTable(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
query string
|
||||
fails bool
|
||||
}{
|
||||
{"Basic", `CREATE TABLE test`, false},
|
||||
{"Exists", "CREATE TABLE test;CREATE TABLE test", true},
|
||||
{"If not exists", "CREATE TABLE IF NOT EXISTS test", false},
|
||||
{"If not exists, twice", "CREATE TABLE IF NOT EXISTS test;CREATE TABLE IF NOT EXISTS test", false},
|
||||
{"With primary key", "CREATE TABLE test(foo STRING PRIMARY KEY)", false},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
db, err := genji.New(memoryengine.NewEngine())
|
||||
require.NoError(t, err)
|
||||
defer db.Close()
|
||||
|
||||
err = db.Exec(test.query)
|
||||
if test.fails {
|
||||
require.Error(t, err)
|
||||
return
|
||||
}
|
||||
require.NoError(t, err)
|
||||
|
||||
err = db.ViewTable("test", func(_ *genji.Tx, _ *database.Table) error {
|
||||
return nil
|
||||
})
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateIndex(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
query string
|
||||
fails bool
|
||||
}{
|
||||
{"Basic", "CREATE INDEX idx ON test (foo)", false},
|
||||
{"If not exists", "CREATE INDEX IF NOT EXISTS idx ON test (foo)", false},
|
||||
{"Unique", "CREATE UNIQUE INDEX IF NOT EXISTS idx ON test (foo)", false},
|
||||
{"No fields", "CREATE INDEX idx ON test", true},
|
||||
{"More than 1 field", "CREATE INDEX idx ON test (foo, bar)", true},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
db, err := genji.New(memoryengine.NewEngine())
|
||||
require.NoError(t, err)
|
||||
defer db.Close()
|
||||
|
||||
err = db.Exec("CREATE TABLE test")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = db.Exec(test.query)
|
||||
if test.fails {
|
||||
require.Error(t, err)
|
||||
return
|
||||
}
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user