route/vendor/github.com/gchaincl/dotsql/dotsql_test.go

106 lines
2.2 KiB
Go

package dotsql
import (
"strings"
"testing"
)
func failIfError(t *testing.T, err error) {
if err != nil {
t.Errorf("err == nil, got '%s'", err)
}
}
func TestLoad(t *testing.T) {
_, err := Load(strings.NewReader(""))
failIfError(t, err)
}
func TestLoadFromString(t *testing.T) {
_, err := LoadFromString("")
failIfError(t, err)
}
func TestRaw(t *testing.T) {
expectedQuery := "SELECT 1+1"
dot, err := LoadFromString("--name: my-query\n" + expectedQuery)
failIfError(t, err)
got, err := dot.Raw("my-query")
failIfError(t, err)
got = strings.TrimSpace(got)
if got != expectedQuery {
t.Errorf("Raw() == '%s', expected '%s'", got, expectedQuery)
}
}
func TestQueries(t *testing.T) {
expectedQueryMap := map[string]string{
"select": "SELECT * from users",
"insert": "INSERT INTO users (?, ?, ?)",
}
dot, err := LoadFromString(`
-- name: select
SELECT * from users
-- name: insert
INSERT INTO users (?, ?, ?)
`)
failIfError(t, err)
got := dot.QueryMap()
if len(got) != len(expectedQueryMap) {
t.Errorf("QueryMap() len (%d) differ from expected (%d)", len(got), len(expectedQueryMap))
}
for name, query := range got {
if query != expectedQueryMap[name] {
t.Errorf("QueryMap()[%s] == '%s', expected '%s'", query, expectedQueryMap[name])
}
}
}
func TestMergeHaveBothQueries(t *testing.T) {
expectedQueryMap := map[string]string{
"query-a": "SELECT * FROM a",
"query-b": "SELECT * FROM b",
}
a, err := LoadFromString("--name: query-a\nSELECT * FROM a")
failIfError(t, err)
b, err := LoadFromString("--name: query-b\nSELECT * FROM b")
failIfError(t, err)
c := Merge(a, b)
got := c.QueryMap()
if len(got) != len(expectedQueryMap) {
t.Errorf("QueryMap() len (%d) differ from expected (%d)", len(got), len(expectedQueryMap))
}
}
func TestMergeTakesPresecendeFromLastArgument(t *testing.T) {
expectedQuery := "SELECT * FROM c"
a, err := LoadFromString("--name: query\nSELECT * FROM a")
failIfError(t, err)
b, err := LoadFromString("--name: query\nSELECT * FROM b")
failIfError(t, err)
c, err := LoadFromString("--name: query\nSELECT * FROM c")
failIfError(t, err)
x := Merge(a, b, c)
got := x.QueryMap()["query"]
if expectedQuery != got {
t.Errorf("Expected query: '%s', got: '%s'", expectedQuery, got)
}
}