-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquery_test.go
More file actions
44 lines (37 loc) · 1.18 KB
/
query_test.go
File metadata and controls
44 lines (37 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package database_test
import (
"testing"
"github.com/gomig/database/v2"
)
func TestQueryBuilder(t *testing.T) {
rawExp := `firstname LIKE '%$5%' AND role IN ($6, $7, $8) OR (age > $9 AND age < $10)`
rawQ := database.NewQuery().
And("firstname LIKE '%?%'", "John").
And("role @in", "admin", "support", "user").
OrClosure("age > ? AND age < ?", 15, 30).
NumericStart(5)
if raw := rawQ.Raw(); raw != rawExp {
t.Logf("Expected: %s\nReturns: %s\n", rawExp, raw)
t.Error("Raw() failed")
}
if len(rawQ.Args()) != 6 {
t.Error("Args() failed")
}
sqlExp := `SELECT * FROM users WHERE name = ? AND id = ? ORDER BY name asc;`
sqlQ := database.NewQuery().
And("name = ?", "John Doe").
And("id = ?", 3).
NumericArgs(false).
Replace("@sort", "name").
Replace("@order", "asc")
if sql := sqlQ.SQL(`SELECT * FROM users @where ORDER BY @sort @order;`); sql != sqlExp {
t.Logf("Expected: %s\nReturns: %s\n", sqlExp, sql)
t.Error("SQL() failed")
}
sqlEmp := `SELECT * FROM users ;`
sqlE := database.NewQuery().AndIf(false, `1 = 1`)
if sql := sqlE.SQL(`SELECT * FROM users @where;`); sql != sqlEmp {
t.Logf("Expected: %s\nReturns: %s\n", sqlEmp, sql)
t.Error("SQL() failed")
}
}