71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package sqlbuilder
|
|
|
|
import (
|
|
"fmt"
|
|
"gotest.tools/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestUnionNoSelect(t *testing.T) {
|
|
query, args, err := UNION().Sql()
|
|
|
|
assert.Assert(t, err != nil)
|
|
//fmt.Println(err.Error())
|
|
fmt.Print(query, args)
|
|
}
|
|
|
|
func TestUnionOneSelect(t *testing.T) {
|
|
query, args, err := UNION(
|
|
table1.SELECT(table1Col1),
|
|
).Sql()
|
|
|
|
assert.Assert(t, err != nil)
|
|
fmt.Println(err.Error())
|
|
fmt.Println(query)
|
|
fmt.Println(args)
|
|
}
|
|
|
|
func TestUnionTwoSelect(t *testing.T) {
|
|
query, args, err := UNION(
|
|
table1.SELECT(table1Col1),
|
|
table2.SELECT(table2Col3),
|
|
).Sql()
|
|
|
|
assert.NilError(t, err)
|
|
assert.Equal(t, query, `((SELECT table1.col1 AS "table1.col1" FROM db.table1) UNION (SELECT table2.col3 AS "table2.col3" FROM db.table2))`)
|
|
assert.Equal(t, len(args), 0)
|
|
}
|
|
|
|
func TestUnionThreeSelect(t *testing.T) {
|
|
query, args, err := UNION(
|
|
table1.SELECT(table1Col1),
|
|
table2.SELECT(table2Col3),
|
|
table3.SELECT(table3Col1),
|
|
).Sql()
|
|
|
|
assert.NilError(t, err)
|
|
assert.Equal(t, query, `((SELECT table1.col1 AS "table1.col1" FROM db.table1) UNION (SELECT table2.col3 AS "table2.col3" FROM db.table2) UNION (SELECT table3.col1 AS "table3.col1" FROM db.table3))`)
|
|
assert.Equal(t, len(args), 0)
|
|
}
|
|
|
|
func TestUnionWithOrderBy(t *testing.T) {
|
|
query, args, err := UNION(
|
|
table1.SELECT(table1Col1),
|
|
table2.SELECT(table2Col3),
|
|
).ORDER_BY(table1Col1.Asc()).Sql()
|
|
|
|
assert.NilError(t, err)
|
|
assert.Equal(t, query, `((SELECT table1.col1 AS "table1.col1" FROM db.table1) UNION (SELECT table2.col3 AS "table2.col3" FROM db.table2)) ORDER BY table1.col1 ASC`)
|
|
assert.Equal(t, len(args), 0)
|
|
}
|
|
|
|
func TestUnionWithLimit(t *testing.T) {
|
|
query, args, err := UNION(
|
|
table1.SELECT(table1Col1),
|
|
table2.SELECT(table2Col3),
|
|
).LIMIT(10).OFFSET(11).Sql()
|
|
|
|
assert.NilError(t, err)
|
|
assert.Equal(t, query, `((SELECT table1.col1 AS "table1.col1" FROM db.table1) UNION (SELECT table2.col3 AS "table2.col3" FROM db.table2)) LIMIT $1 OFFSET $2`)
|
|
assert.Equal(t, len(args), 2)
|
|
}
|