/
githubmirror
/
squirrel
Обзор
Документация
Войти
/
githubmirror
/
squirrel
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
insert_test.go
112 строк
3 KB
swithek
Add missing MustSql methods (#288)
04 июн 2021, 18:05
Не верифицирован
04 июн 2021, 18:05
cd1fe0a
Код
Авторство
О чём код?
package squirrel import ( "testing" "github.com/stretchr/testify/assert" ) func TestInsertBuilderToSql(t *testing.T) { b := Insert(""). Prefix("WITH prefix AS ?", 0). Into("a"). Options("DELAYED", "IGNORE"). Columns("b", "c"). Values(1, 2). Values(3, Expr("? + 1", 4)). Suffix("RETURNING ?", 5) sql, args, err := b.ToSql() assert.NoError(t, err) expectedSQL := "WITH prefix AS ? " + "INSERT DELAYED IGNORE INTO a (b,c) VALUES (?,?),(?,? + 1) " + "RETURNING ?" assert.Equal(t, expectedSQL, sql) expectedArgs := []interface{}{0, 1, 2, 3, 4, 5} assert.Equal(t, expectedArgs, args) } func TestInsertBuilderToSqlErr(t *testing.T) { _, _, err := Insert("").Values(1).ToSql() assert.Error(t, err) _, _, err = Insert("x").ToSql() assert.Error(t, err) } func TestInsertBuilderMustSql(t *testing.T) { defer func() { if r := recover(); r == nil { t.Errorf("TestInsertBuilderMustSql should have panicked!") } }() Insert("").MustSql() } func TestInsertBuilderPlaceholders(t *testing.T) { b := Insert("test").Values(1, 2) sql, _, _ := b.PlaceholderFormat(Question).ToSql() assert.Equal(t, "INSERT INTO test VALUES (?,?)", sql) sql, _, _ = b.PlaceholderFormat(Dollar).ToSql() assert.Equal(t, "INSERT INTO test VALUES ($1,$2)", sql) } func TestInsertBuilderRunners(t *testing.T) { db := &DBStub{} b := Insert("test").Values(1).RunWith(db) expectedSQL := "INSERT INTO test VALUES (?)" b.Exec() assert.Equal(t, expectedSQL, db.LastExecSql) } func TestInsertBuilderNoRunner(t *testing.T) { b := Insert("test").Values(1) _, err := b.Exec() assert.Equal(t, RunnerNotSet, err) } func TestInsertBuilderSetMap(t *testing.T) { b := Insert("table").SetMap(Eq{"field1": 1, "field2": 2, "field3": 3}) sql, args, err := b.ToSql() assert.NoError(t, err) expectedSQL := "INSERT INTO table (field1,field2,field3) VALUES (?,?,?)" assert.Equal(t, expectedSQL, sql) expectedArgs := []interface{}{1, 2, 3} assert.Equal(t, expectedArgs, args) } func TestInsertBuilderSelect(t *testing.T) { sb := Select("field1").From("table1").Where(Eq{"field1": 1}) ib := Insert("table2").Columns("field1").Select(sb) sql, args, err := ib.ToSql() assert.NoError(t, err) expectedSQL := "INSERT INTO table2 (field1) SELECT field1 FROM table1 WHERE field1 = ?" assert.Equal(t, expectedSQL, sql) expectedArgs := []interface{}{1} assert.Equal(t, expectedArgs, args) } func TestInsertBuilderReplace(t *testing.T) { b := Replace("table").Values(1) expectedSQL := "REPLACE INTO table VALUES (?)" sql, _, err := b.ToSql() assert.NoError(t, err) assert.Equal(t, expectedSQL, sql) }