jet/postgres/table_test.go

102 lines
3.3 KiB
Go
Raw Normal View History

2019-08-11 14:29:03 +02:00
package postgres
import (
2019-06-05 17:15:20 +02:00
"testing"
)
2019-06-05 17:15:20 +02:00
func TestJoinNilInputs(t *testing.T) {
assertClauseSerializeErr(t, table2.INNER_JOIN(nil, table1ColBool.EQ(table2ColBool)),
2019-07-08 13:00:44 +02:00
"jet: right hand side of join operation is nil table")
2019-06-05 17:15:20 +02:00
assertClauseSerializeErr(t, table2.INNER_JOIN(table1, nil),
2019-07-08 13:00:44 +02:00
"jet: join condition is nil")
}
2019-06-05 17:15:20 +02:00
func TestINNER_JOIN(t *testing.T) {
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
INNER_JOIN(table2, table1ColInt.EQ(table2ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
INNER JOIN db.table2 ON (table1.col_int = table2.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
INNER_JOIN(table2, table1ColInt.EQ(table2ColInt)).
INNER_JOIN(table3, table1ColInt.EQ(table3ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
INNER JOIN db.table2 ON (table1.col_int = table2.col_int)
INNER JOIN db.table3 ON (table1.col_int = table3.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
INNER_JOIN(table2, table1ColInt.EQ(Int(1))).
INNER_JOIN(table3, table1ColInt.EQ(Int(2))),
`db.table1
2019-06-17 12:05:52 +02:00
INNER JOIN db.table2 ON (table1.col_int = $1)
INNER JOIN db.table3 ON (table1.col_int = $2)`, int64(1), int64(2))
}
2019-06-05 17:15:20 +02:00
func TestLEFT_JOIN(t *testing.T) {
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
LEFT_JOIN(table2, table1ColInt.EQ(table2ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
LEFT JOIN db.table2 ON (table1.col_int = table2.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
LEFT_JOIN(table2, table1ColInt.EQ(table2ColInt)).
LEFT_JOIN(table3, table1ColInt.EQ(table3ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
LEFT JOIN db.table2 ON (table1.col_int = table2.col_int)
LEFT JOIN db.table3 ON (table1.col_int = table3.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
LEFT_JOIN(table2, table1ColInt.EQ(Int(1))).
LEFT_JOIN(table3, table1ColInt.EQ(Int(2))),
`db.table1
2019-06-17 12:05:52 +02:00
LEFT JOIN db.table2 ON (table1.col_int = $1)
LEFT JOIN db.table3 ON (table1.col_int = $2)`, int64(1), int64(2))
}
2019-06-05 17:15:20 +02:00
func TestRIGHT_JOIN(t *testing.T) {
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
RIGHT_JOIN(table2, table1ColInt.EQ(table2ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
RIGHT JOIN db.table2 ON (table1.col_int = table2.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
RIGHT_JOIN(table2, table1ColInt.EQ(table2ColInt)).
RIGHT_JOIN(table3, table1ColInt.EQ(table3ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
RIGHT JOIN db.table2 ON (table1.col_int = table2.col_int)
RIGHT JOIN db.table3 ON (table1.col_int = table3.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
RIGHT_JOIN(table2, table1ColInt.EQ(Int(1))).
RIGHT_JOIN(table3, table1ColInt.EQ(Int(2))),
`db.table1
2019-06-17 12:05:52 +02:00
RIGHT JOIN db.table2 ON (table1.col_int = $1)
RIGHT JOIN db.table3 ON (table1.col_int = $2)`, int64(1), int64(2))
}
2019-06-05 17:15:20 +02:00
func TestFULL_JOIN(t *testing.T) {
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
FULL_JOIN(table2, table1ColInt.EQ(table2ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
FULL JOIN db.table2 ON (table1.col_int = table2.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
FULL_JOIN(table2, table1ColInt.EQ(table2ColInt)).
FULL_JOIN(table3, table1ColInt.EQ(table3ColInt)),
`db.table1
2019-06-17 12:05:52 +02:00
FULL JOIN db.table2 ON (table1.col_int = table2.col_int)
FULL JOIN db.table3 ON (table1.col_int = table3.col_int)`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
FULL_JOIN(table2, table1ColInt.EQ(Int(1))).
FULL_JOIN(table3, table1ColInt.EQ(Int(2))),
`db.table1
2019-06-17 12:05:52 +02:00
FULL JOIN db.table2 ON (table1.col_int = $1)
FULL JOIN db.table3 ON (table1.col_int = $2)`, int64(1), int64(2))
}
2019-06-05 17:15:20 +02:00
func TestCROSS_JOIN(t *testing.T) {
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
CROSS_JOIN(table2),
`db.table1
CROSS JOIN db.table2`)
assertSerialize(t, table1.
2019-06-05 17:15:20 +02:00
CROSS_JOIN(table2).
CROSS_JOIN(table3),
`db.table1
CROSS JOIN db.table2
CROSS JOIN db.table3`)
}