test(qb): Add tests for qb section (#74)
test(qb): Add missing tests for qb directory * Add a GROUP BY test without Columns * Add LtFunc test * Add LtOrEqFunc test * Add GtFunc test * Add GtOrEqFunc test * Add a Select with a AS between one column test * Add a Order By DESC test * Add Sum test * Add Avg test * Add Max test * Add 2 tests for FuncColumn * Add SetNamed test * Add AddFunc test * Add RemoveFunc test * Add TTL and TimestampNamed test * Add TTLNamed and Timestamp test * Add TTL with negative or no duration test * Add LtFunc test * Add LtOrEqFunc test * Add GtFunc test * Add GtOrEqFunc test * Add a Select with a AS between one column test * Add a Order By DESC test * Add Sum test * Add Avg test * Add Max test * Add SetNamed test * Add AddFunc test * Add RemoveFunc test * Add TTL and TimestampNamed test * Add TTLNamed and Timestamp test * Add TTL with negative or no duration test * Add LtFunc test * Add LtOrEqFunc test * Add GtFunc test * Add GtOrEqFunc test * Add a Select with a AS between one column test * Add a Order By DESC test * Add Sum test * Add Avg test * Add Max test * Add 2 tests for FuncColumn * Add SetNamed test * Add AddFunc test * Add RemoveFunc test * In qb/select.go, if there are no colums and the query have a GroupBy statement then the query will be malformated. * In qb/utils.go, refactor writeCql with a strings.Join call. Fixes #78
This commit is contained in:
committed by
Michal Matczuk
parent
dcec9d031f
commit
87976451ed
@@ -151,6 +151,24 @@ func TestCmp(t *testing.T) {
|
||||
C: EqFunc("eq", Now()),
|
||||
S: "eq=now()",
|
||||
},
|
||||
{
|
||||
C: LtFunc("eq", Now()),
|
||||
S: "eq<now()",
|
||||
},
|
||||
{
|
||||
C: LtOrEqFunc("eq", MaxTimeuuid("arg0")),
|
||||
S: "eq<=maxTimeuuid(?)",
|
||||
N: []string{"arg0"},
|
||||
},
|
||||
{
|
||||
C: GtFunc("eq", Now()),
|
||||
S: "eq>now()",
|
||||
},
|
||||
{
|
||||
C: GtOrEqFunc("eq", MaxTimeuuid("arg0")),
|
||||
S: "eq>=maxTimeuuid(?)",
|
||||
N: []string{"arg0"},
|
||||
},
|
||||
}
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
|
||||
@@ -76,6 +76,17 @@ func TestInsertBuilder(t *testing.T) {
|
||||
S: "INSERT INTO cycling.cyclist_name (id,user_uuid,firstname) VALUES (?,?,?) IF NOT EXISTS ",
|
||||
N: []string{"id", "user_uuid", "firstname"},
|
||||
},
|
||||
// Add FuncColumn
|
||||
{
|
||||
B: Insert("cycling.cyclist_name").FuncColumn("id", Now()),
|
||||
S: "INSERT INTO cycling.cyclist_name (id) VALUES (now()) ",
|
||||
N: nil,
|
||||
},
|
||||
{
|
||||
B: Insert("cycling.cyclist_name").FuncColumn("id", Now()).Columns("user_uuid"),
|
||||
S: "INSERT INTO cycling.cyclist_name (id,user_uuid) VALUES (now(),?) ",
|
||||
N: []string{"user_uuid"},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range table {
|
||||
|
||||
@@ -33,6 +33,12 @@ func TestSelectBuilder(t *testing.T) {
|
||||
B: Select("cycling.cyclist_name").Columns("id", "user_uuid", As("firstname", "name")),
|
||||
S: "SELECT id,user_uuid,firstname AS name FROM cycling.cyclist_name ",
|
||||
},
|
||||
// Add a SELECT AS column 2
|
||||
{
|
||||
B: Select("cycling.cyclist_name").
|
||||
Columns(As("firstname", "name"), "id", As("user_uuid", "user")),
|
||||
S: "SELECT firstname AS name,id,user_uuid AS user FROM cycling.cyclist_name ",
|
||||
},
|
||||
// Basic test for select distinct
|
||||
{
|
||||
B: Select("cycling.cyclist_name").Distinct("id"),
|
||||
@@ -70,6 +76,12 @@ func TestSelectBuilder(t *testing.T) {
|
||||
S: "SELECT * FROM cycling.cyclist_name WHERE id=? ORDER BY firstname ASC ",
|
||||
N: []string{"expr"},
|
||||
},
|
||||
// Add ORDER BY
|
||||
{
|
||||
B: Select("cycling.cyclist_name").Where(w).OrderBy("firstname", DESC),
|
||||
S: "SELECT * FROM cycling.cyclist_name WHERE id=? ORDER BY firstname DESC ",
|
||||
N: []string{"expr"},
|
||||
},
|
||||
// Add ORDER BY two columns
|
||||
{
|
||||
B: Select("cycling.cyclist_name").Where(w).OrderBy("firstname", ASC).OrderBy("lastname", DESC),
|
||||
@@ -110,6 +122,21 @@ func TestSelectBuilder(t *testing.T) {
|
||||
B: Select("cycling.cyclist_name").Min("stars"),
|
||||
S: "SELECT min(stars) FROM cycling.cyclist_name ",
|
||||
},
|
||||
// Add Sum
|
||||
{
|
||||
B: Select("cycling.cyclist_name").Sum("*") ,
|
||||
S: "SELECT sum(*) FROM cycling.cyclist_name ",
|
||||
},
|
||||
// Add Avg
|
||||
{
|
||||
B: Select("cycling.cyclist_name").Avg("stars"),
|
||||
S: "SELECT avg(stars) FROM cycling.cyclist_name ",
|
||||
},
|
||||
// Add Max
|
||||
{
|
||||
B: Select("cycling.cyclist_name").Max("stars"),
|
||||
S: "SELECT max(stars) FROM cycling.cyclist_name ",
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range table {
|
||||
|
||||
@@ -125,6 +125,24 @@ func TestUpdateBuilder(t *testing.T) {
|
||||
S: "UPDATE cycling.cyclist_name SET id=?,user_uuid=?,firstname=? WHERE id=? IF EXISTS ",
|
||||
N: []string{"id", "user_uuid", "firstname", "expr"},
|
||||
},
|
||||
// Add SET column
|
||||
{
|
||||
B: Update("cycling.cyclist_name").SetNamed("firstname", "name"),
|
||||
S: "UPDATE cycling.cyclist_name SET firstname=? ",
|
||||
N: []string{"name"},
|
||||
},
|
||||
// Add AddFunc
|
||||
{
|
||||
B: Update("cycling.cyclist_name").AddFunc("timestamp", Now()),
|
||||
S: "UPDATE cycling.cyclist_name SET timestamp=timestamp+now() ",
|
||||
N: nil,
|
||||
},
|
||||
// Add RemoveFunc
|
||||
{
|
||||
B: Update("cycling.cyclist_name").RemoveFunc("timestamp", Now()),
|
||||
S: "UPDATE cycling.cyclist_name SET timestamp=timestamp-now() ",
|
||||
N: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range table {
|
||||
|
||||
@@ -57,12 +57,38 @@ func TestUsing(t *testing.T) {
|
||||
B: new(using).TTL(time.Second).Timestamp(time.Date(2005, 05, 05, 0, 0, 0, 0, time.UTC)),
|
||||
S: "USING TTL 1 AND TIMESTAMP 1115251200000000 ",
|
||||
},
|
||||
// TTL TimestampNamed
|
||||
{
|
||||
B: new(using).TTL(time.Second).TimestampNamed("ts"),
|
||||
S: "USING TTL 1 AND TIMESTAMP ? ",
|
||||
N: []string{"ts"},
|
||||
},
|
||||
// TTLNamed TimestampNamed
|
||||
{
|
||||
B: new(using).TTLNamed("ttl").TimestampNamed("ts"),
|
||||
S: "USING TTL ? AND TIMESTAMP ? ",
|
||||
N: []string{"ttl", "ts"},
|
||||
},
|
||||
// TTLNamed Timestamp
|
||||
{
|
||||
B: new(using).TTLNamed("ttl").Timestamp(time.Date(2005, 05, 05, 0, 0, 0, 0, time.UTC)),
|
||||
S: "USING TTL ? AND TIMESTAMP 1115251200000000 ",
|
||||
N: []string{"ttl"},
|
||||
},
|
||||
// TTL with no duration
|
||||
{
|
||||
B: new(using).TTL(0 * time.Second),
|
||||
S: "USING TTL 0 ",
|
||||
},
|
||||
{
|
||||
B: new(using).TTL(-1 * time.Second),
|
||||
S: "USING TTL 0 ",
|
||||
},
|
||||
{
|
||||
// TODO patch this maybe in the future
|
||||
B: new(using).TTL(-2 * time.Second),
|
||||
S: "USING TTL -2 ",
|
||||
},
|
||||
// TTL TTLNamed
|
||||
{
|
||||
B: new(using).TTL(time.Second).TTLNamed("ttl"),
|
||||
|
||||
Reference in New Issue
Block a user