Skip to content

Commit e02ebaf

Browse files
committed
More tests
1 parent ec602d4 commit e02ebaf

6 files changed

Lines changed: 131 additions & 3 deletions

File tree

sqlbuilder.nimble

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ task testlegacy, "Test legacy":
2828

2929
proc runSelect() =
3030
exec "nim c -d:dev -r tests/select/test_select.nim"
31+
exec "nim c -d:dev -r tests/select/test_select_arrays.nim"
3132
exec "nim c -d:dev -r tests/select/test_select_deletemarker.nim"
3233
exec "nim c -d:dev -r tests/select/test_select_const.nim"
3334
exec "nim c -d:dev -r tests/select/test_select_const_deletemarker.nim"
@@ -37,6 +38,7 @@ task testselect, "Test select statement":
3738

3839

3940
proc runInsert() =
41+
exec "nim c -d:dev -r tests/insert/test_insert_db.nim"
4042
exec "nim c -d:dev -r tests/insert/test_insert.nim"
4143

4244
task testinsert, "Test insert statement":

src/sqlbuilderpkg/select.nim

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,9 @@ macro sqlSelectConst*(
366366

367367

368368

369-
369+
##
370+
## Default select generator
371+
##
370372
proc sqlSelect*(
371373
# BASE
372374
table: string,

tests/insert/test_insert.nim

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,35 @@ suite "insert - default":
6969

7070

7171

72-
test "empty value transform to NULL":
72+
test "empty value transform to NULL #1":
7373
var test: SqlQuery
7474

7575
test = sqlInsert("my-table", ["name", "age"], @["", "30"])
7676
check querycompare(test, sql("INSERT INTO my-table (name, age) VALUES (NULL, ?)"))
7777

78-
test "empty value transform to NULL":
78+
test "empty value transform to NULL #2":
7979
var test: SqlQuery
8080

8181
test = sqlInsert("my-table", ["name", "age"], @["", ""])
8282
check querycompare(test, sql("INSERT INTO my-table (name, age) VALUES (NULL, NULL)"))
8383

84+
test "empty value transform to NULL #3":
85+
var test: SqlQuery
86+
87+
test = sqlInsert("my-table", ["name", "age", "company", "ident"], @["john", "23", "", "ok"])
88+
check querycompare(test, sql("INSERT INTO my-table (name, age, company, ident) VALUES (?, ?, NULL, ?)"))
89+
90+
test "empty value transform to NULL #5":
91+
var test: SqlQuery
92+
93+
test = sqlInsert("my-table", ["name", "age", "company", "ident"], @["", "", "", ""])
94+
check querycompare(test, sql("INSERT INTO my-table (name, age, company, ident) VALUES (NULL, NULL, NULL, NULL)"))
95+
96+
test "empty value transform to NULL #4":
97+
var test: SqlQuery
98+
99+
test = sqlInsert("my-table", ["name", "age", "company", "ident"], @["john", "", "", "ok"])
100+
check querycompare(test, sql("INSERT INTO my-table (name, age, company, ident) VALUES (?, NULL, NULL, ?)"))
84101

85102

86103
suite "insert - macro":

tests/insert/test_insert_db.nim

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Copyright Thomas T. Jarløv (TTJ) - ttj@ttj.dk
2+
3+
when NimMajor >= 2:
4+
import
5+
db_connector/db_sqlite
6+
else:
7+
import
8+
std/db_sqlite
9+
10+
import
11+
std/strutils,
12+
std/unittest
13+
14+
import
15+
src/sqlbuilder,
16+
src/sqlbuilderpkg/utils_private
17+
18+
19+
import tests/create_db
20+
21+
22+
23+
24+
suite "insert into db":
25+
test "empty value transform to NULL #5":
26+
27+
createDB()
28+
29+
let db = openDB()
30+
31+
check tryInsertID(db,
32+
sqlInsert("my_table",
33+
["name", "age", "ident"],
34+
@["john", "", ""]), @["john", "", ""]
35+
) > 0
36+
37+
echo tryInsertID(db,
38+
sqlInsert("my_table",
39+
["name", "age", "ident"],
40+
@["john", "12", ""]), @["john", "", ""]
41+
)
42+
43+

tests/select/test_select.nim

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,3 +577,8 @@ suite "catch bad formats":
577577

578578

579579

580+
581+
582+
583+
584+
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Copyright Thomas T. Jarløv (TTJ)
2+
3+
when NimMajor >= 2:
4+
import db_connector/db_common
5+
else:
6+
import std/db_common
7+
8+
import
9+
std/strutils,
10+
std/unittest
11+
12+
import
13+
src/sqlbuilder,
14+
src/sqlbuilderpkg/utils_private
15+
16+
17+
18+
suite "sqlSelect - array formatting":
19+
20+
test "setting type int":
21+
22+
let test = sqlSelect(
23+
table = "tasks",
24+
select = @["id", "name"],
25+
where = @["some_ids = ANY(?::INT[])"],
26+
)
27+
check querycompare(test, sql("SELECT id, name FROM tasks WHERE some_ids = ANY(?::INT[])"))
28+
29+
30+
test "setting type int multiple times":
31+
32+
let test = sqlSelect(
33+
table = "tasks",
34+
select = @["id", "name"],
35+
where = @[
36+
"some_ids = ANY(?::INT[])",
37+
"hash_ids = ANY(?::INT[])",
38+
"version =",
39+
"revisions = ANY(?::INT[])"
40+
],
41+
)
42+
check querycompare(test, sql("SELECT id, name FROM tasks WHERE some_ids = ANY(?::INT[]) AND hash_ids = ANY(?::INT[]) AND version = ? AND revisions = ANY(?::INT[])"))
43+
44+
45+
test "setting type int + text multiple times":
46+
47+
let test = sqlSelect(
48+
table = "tasks",
49+
select = @["id", "name"],
50+
where = @[
51+
"some_ids = ANY(?::TEXT[])",
52+
"hash_ids = ANY(?::INT[])",
53+
"version =",
54+
"revisions = ANY(?::TEXT[])"
55+
],
56+
)
57+
check querycompare(test, sql("SELECT id, name FROM tasks WHERE some_ids = ANY(?::TEXT[]) AND hash_ids = ANY(?::INT[]) AND version = ? AND revisions = ANY(?::TEXT[])"))
58+
59+

0 commit comments

Comments
 (0)