1+ # Copyright Thomas T. Jarløv (TTJ)
2+
3+ import
4+ std/ db_common,
5+ std/ unittest,
6+ src/ sqlbuilder
7+
8+
9+ suite " test formats" :
10+
11+ test " genArgsColumns" :
12+ let (s, a) = genArgsColumns ((true , " name" , " " ), (true , " age" , 30 ), (false , " nim" , " " ), (true , " " , " 154" ))
13+
14+ assert s == [" name" , " age" ]
15+
16+ for k, v in a.query:
17+ if k == 0 :
18+ assert $ v == """ (val: "", isNull: false) """
19+ if k == 1 :
20+ assert $ v == """ (val: "30", isNull: false) """
21+ if k == 3 :
22+ assert $ v == """ (val: "154", isNull: false) """
23+
24+ for k, v in a.args:
25+ if k == 0 :
26+ assert $ v == " "
27+ if k == 1 :
28+ assert $ v == " 30"
29+ if k == 3 :
30+ assert $ v == " 154"
31+
32+ let a1 = sqlInsert (" my-table" , s, a.query)
33+ let a2 = sqlDelete (" my-table" , s, a.query)
34+ let a3 = sqlUpdate (" my-table" , s, [" id" ], a.query)
35+ let a4 = sqlSelect (" my-table" , s, [" " ], [" id =" ], " " , " " , " " , a.query)
36+
37+
38+ test " genArgsSetNull" :
39+ let b = genArgsSetNull (" hje" , " " , " 12" )
40+ assert b.args == @ [" hje" , " 12" ]
41+ assert b.query.len () == 3
42+ for k, v in b.query:
43+ if k == 0 :
44+ assert $ v == """ (val: "hje", isNull: false) """
45+ if k == 1 :
46+ assert $ v == """ (val: "", isNull: true) """
47+ if k == 2 :
48+ assert $ v == """ (val: "12", isNull: false) """
49+
50+ test " genArgs" :
51+ let b = genArgs (" hje" , " " , " 12" )
52+ assert b.args == @ [" hje" , " " , " 12" ]
53+ assert b.query.len () == 3
54+ for k, v in b.query:
55+ if k == 0 :
56+ assert $ v == """ (val: "hje", isNull: false) """
57+ if k == 1 :
58+ assert $ v == """ (val: "", isNull: false) """
59+ if k == 2 :
60+ assert $ v == """ (val: "12", isNull: false) """
61+
62+ test " genArgs with null" :
63+ let b = genArgs (" hje" , dbNullVal, " 12" )
64+ assert b.args == @ [" hje" , " 12" ]
65+ assert b.query.len () == 3
66+ for k, v in b.query:
67+ if k == 0 :
68+ assert $ v == """ (val: "hje", isNull: false) """
69+ if k == 1 :
70+ assert $ v == """ (val: "", isNull: true) """
71+ if k == 2 :
72+ assert $ v == """ (val: "12", isNull: false) """
73+
74+ test " sqlInsert" :
75+ let (s, a1) = genArgsColumns ((true , " name" , " " ), (true , " age" , 30 ), (false , " nim" , " " ), (true , " " , " 154" ))
76+ discard sqlInsert (" my-table" , s, a1.query)
77+ assert testout == " INSERT INTO my-table (name, age) VALUES (?, ?)"
78+
79+ let a2 = genArgsSetNull (" hje" , " " )
80+ discard sqlInsert (" my-table" , [" name" , " age" ], a2.query)
81+ assert testout == " INSERT INTO my-table (name) VALUES (?)"
82+
83+ test " sqlUpdate" :
84+ let (s, a1) = genArgsColumns ((true , " name" , " " ), (true , " age" , 30 ), (false , " nim" , " " ), (true , " " , " 154" ))
85+ discard sqlUpdate (" my-table" , s, [" id" ], a1.query)
86+ assert testout == " UPDATE my-table SET name = ?, age = ? WHERE id = ?"
87+
88+ let a2 = genArgsSetNull (" hje" , " " )
89+ discard sqlUpdate (" my-table" , [" name" , " age" ], [" id" ], a2.query)
90+ assert testout == " UPDATE my-table SET name = ?, age = NULL WHERE id = ?"
91+
92+ let a3 = genArgs (" hje" , " " )
93+ discard sqlUpdate (" my-table" , [" name" , " age" ], [" id" ], a3.query)
94+ assert testout == " UPDATE my-table SET name = ?, age = ? WHERE id = ?"
95+
96+ let a4 = genArgs (" hje" , dbNullVal)
97+ discard sqlUpdate (" my-table" , [" name" , " age" ], [" id" ], a4.query)
98+ assert testout == " UPDATE my-table SET name = ?, age = NULL WHERE id = ?"
99+
100+ test " sqlSelect" :
101+ let a2 = genArgsSetNull (" hje" , " " , " 123" )
102+ discard sqlSelect (" my-table" , [" name" , " age" ], [" " ], [" id =" ], " " , " " , " " , a2.query)
103+ assert testout == " SELECT name, age FROM my-table WHERE id = ? "
104+
105+ let a3 = genArgs (" hje" , " " )
106+ discard sqlSelect (" my-table AS m" , [" m.name" , " m.age" ], [" p ON p.id = m.id" ], [" m.id =" ], " " , " " , " " , a3.query)
107+ assert testout == " SELECT m.name, m.age FROM my-table AS m LEFT JOIN p ON p.id = m.id WHERE m.id = ? "
108+
109+ let a4 = genArgs (" hje" , dbNullVal)
110+ discard sqlSelect (" my-table" , [" name" , " age" ], [" " ], [" id =" ], " " , " " , " " , a4.query)
111+ assert testout == " SELECT name, age FROM my-table WHERE id = ? "
0 commit comments