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