@balena/abstract-sql-compiler 7.20.6 → 7.20.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,17 @@
1
+ - commits:
2
+ - subject: "CI: Split up abstract-sql tests"
3
+ hash: ccb1ab49aff947a8e06b109abe0c8d0dec291133
4
+ body: ""
5
+ footer:
6
+ Change-type: patch
7
+ change-type: patch
8
+ Signed-off-by: Josh Bowling <josh@monarci.com>
9
+ signed-off-by: Josh Bowling <josh@monarci.com>
10
+ author: Josh Bowling
11
+ nested: []
12
+ version: 7.20.7
13
+ title: ""
14
+ date: 2022-11-17T00:41:49.560Z
1
15
  - commits:
2
16
  - subject: "CI: Add more abstract-sql unit tests"
3
17
  hash: 58f6210f55806ad15fd5e9c90079f208e64b781d
@@ -11,7 +25,7 @@
11
25
  nested: []
12
26
  version: 7.20.6
13
27
  title: ""
14
- date: 2022-11-16T08:37:14.277Z
28
+ date: 2022-11-16T08:40:37.105Z
15
29
  - commits:
16
30
  - subject: Fix Right SQL generation
17
31
  hash: 8b6715c84ac7dab4c4248d19afa4b578c0d6c0ec
package/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file
4
4
  automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## 7.20.7 - 2022-11-17
8
+
9
+ * CI: Split up abstract-sql tests [Josh Bowling]
10
+
7
11
  ## 7.20.6 - 2022-11-16
8
12
 
9
13
  * CI: Add more abstract-sql unit tests [Josh Bowling]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/abstract-sql-compiler",
3
- "version": "7.20.6",
3
+ "version": "7.20.7",
4
4
  "description": "A translator for abstract sql into sql.",
5
5
  "main": "out/AbstractSQLCompiler.js",
6
6
  "types": "out/AbstractSQLCompiler.d.ts",
@@ -63,6 +63,6 @@
63
63
  ]
64
64
  },
65
65
  "versionist": {
66
- "publishedAt": "2022-11-16T08:37:14.574Z"
66
+ "publishedAt": "2022-11-17T00:41:49.962Z"
67
67
  }
68
68
  }
@@ -40,449 +40,3 @@ describe('Sum', () => {
40
40
  },
41
41
  );
42
42
  });
43
-
44
- describe('Add', () => {
45
- test(
46
- ['SelectQuery', ['Select', [['Add', ['Number', 5], ['Number', 3]]]]],
47
- (result, sqlEquals) => {
48
- it('should produce a valid Add statement', () => {
49
- sqlEquals(result.query, 'SELECT 5 + 3');
50
- });
51
- },
52
- );
53
- });
54
-
55
- describe('Subtract', () => {
56
- test(
57
- ['SelectQuery', ['Select', [['Subtract', ['Number', 5], ['Number', 3]]]]],
58
- (result, sqlEquals) => {
59
- it('should produce a valid Subtract statement', () => {
60
- sqlEquals(result.query, 'SELECT 5 - 3');
61
- });
62
- },
63
- );
64
- });
65
-
66
- describe('Multiply', () => {
67
- test(
68
- ['SelectQuery', ['Select', [['Multiply', ['Number', 5], ['Number', 3]]]]],
69
- (result, sqlEquals) => {
70
- it('should produce a valid Multiply statement', () => {
71
- sqlEquals(result.query, 'SELECT 5 * 3');
72
- });
73
- },
74
- );
75
- });
76
-
77
- describe('Divide', () => {
78
- test(
79
- ['SelectQuery', ['Select', [['Divide', ['Number', 10], ['Number', 5]]]]],
80
- (result, sqlEquals) => {
81
- it('should produce a valid Divide statement', () => {
82
- sqlEquals(result.query, 'SELECT 10 / 5');
83
- });
84
- },
85
- );
86
- });
87
-
88
- describe('Year', () => {
89
- test(
90
- ['SelectQuery', ['Select', [['Year', ['Date', '2022-10-10']]]]],
91
- [['Date', '2022-10-10']],
92
- (result, sqlEquals) => {
93
- it('should produce a valid Year statement', () => {
94
- sqlEquals(result.query, `SELECT EXTRACT('YEAR' FROM $1)`);
95
- });
96
- },
97
- );
98
- });
99
-
100
- describe('Month', () => {
101
- test(
102
- ['SelectQuery', ['Select', [['Month', ['Date', '2022-10-10']]]]],
103
- [['Date', '2022-10-10']],
104
- (result, sqlEquals) => {
105
- it('should produce a valid Month statement', () => {
106
- sqlEquals(result.query, `SELECT EXTRACT('MONTH' FROM $1)`);
107
- });
108
- },
109
- );
110
- });
111
-
112
- describe('Day', () => {
113
- test(
114
- ['SelectQuery', ['Select', [['Day', ['Date', '2022-10-10']]]]],
115
- [['Date', '2022-10-10']],
116
- (result, sqlEquals) => {
117
- it('should produce a valid Day statement', () => {
118
- sqlEquals(result.query, `SELECT EXTRACT('DAY' FROM $1)`);
119
- });
120
- },
121
- );
122
- });
123
-
124
- describe('Hour', () => {
125
- test(
126
- [
127
- 'SelectQuery',
128
- ['Select', [['Hour', ['Date', '2022-10-10T10:10:10.000Z']]]],
129
- ],
130
- [['Date', '2022-10-10T10:10:10.000Z']],
131
- (result, sqlEquals) => {
132
- it('should produce a valid Hour statement', () => {
133
- sqlEquals(result.query, `SELECT EXTRACT('HOUR' FROM $1)`);
134
- });
135
- },
136
- );
137
- });
138
-
139
- describe('Minute', () => {
140
- test(
141
- [
142
- 'SelectQuery',
143
- ['Select', [['Minute', ['Date', '2022-10-10T10:10:10.000Z']]]],
144
- ],
145
- [['Date', '2022-10-10T10:10:10.000Z']],
146
- (result, sqlEquals) => {
147
- it('should produce a valid Minute statement', () => {
148
- sqlEquals(result.query, `SELECT EXTRACT('MINUTE' FROM $1)`);
149
- });
150
- },
151
- );
152
- });
153
-
154
- describe('Second', () => {
155
- test(
156
- [
157
- 'SelectQuery',
158
- ['Select', [['Second', ['Date', '2022-10-10T10:10:10.000Z']]]],
159
- ],
160
- [['Date', '2022-10-10T10:10:10.000Z']],
161
- (result, sqlEquals) => {
162
- it('should produce a valid extract second statement', () => {
163
- sqlEquals(result.query, `SELECT FLOOR(EXTRACT('SECOND' FROM $1))`);
164
- });
165
- },
166
- );
167
- });
168
-
169
- describe('Fractionalseconds', () => {
170
- test(
171
- [
172
- 'SelectQuery',
173
- ['Select', [['Fractionalseconds', ['Date', '2022-10-10T10:10:10.000Z']]]],
174
- ],
175
- [['Date', '2022-10-10T10:10:10.000Z']],
176
- (result, sqlEquals) => {
177
- it('should produce a valid extract Fractionalseconds statement', () => {
178
- sqlEquals(
179
- result.query,
180
- `SELECT EXTRACT('SECOND' FROM $1) - FLOOR(EXTRACT('SECOND' FROM $1))`,
181
- );
182
- });
183
- },
184
- );
185
- });
186
-
187
- describe('Totalseconds', () => {
188
- test(
189
- [
190
- 'SelectQuery',
191
- [
192
- 'Select',
193
- [
194
- [
195
- 'Totalseconds',
196
- [
197
- 'Duration',
198
- {
199
- day: 1,
200
- },
201
- ],
202
- ],
203
- ],
204
- ],
205
- ],
206
- (result, sqlEquals) => {
207
- it('should produce a valid Totalseconds statement', () => {
208
- sqlEquals(
209
- result.query,
210
- `SELECT EXTRACT(EPOCH FROM INTERVAL '1 0:0:0.0')`,
211
- );
212
- });
213
- },
214
- );
215
- });
216
-
217
- describe('Concatenate', () => {
218
- test(
219
- [
220
- 'SelectQuery',
221
- [
222
- 'Select',
223
- [['Concatenate', ['EmbeddedText', 'foo'], ['EmbeddedText', 'bar']]],
224
- ],
225
- ],
226
- (result, sqlEquals) => {
227
- it('should produce a valid Concatenate statement', () => {
228
- sqlEquals(result.query, `SELECT ('foo' || 'bar')`);
229
- });
230
- },
231
- );
232
- });
233
-
234
- describe('ConcatenateWithSeparator', () => {
235
- test(
236
- [
237
- 'SelectQuery',
238
- [
239
- 'Select',
240
- [
241
- [
242
- 'ConcatenateWithSeparator',
243
- ['EmbeddedText', '|'],
244
- ['EmbeddedText', 'foo'],
245
- ['EmbeddedText', 'bar'],
246
- ],
247
- ],
248
- ],
249
- ],
250
- (result, sqlEquals) => {
251
- it('should produce a valid ConcatenateWithSeparator statement', () => {
252
- sqlEquals(result.query, `SELECT CONCAT_WS('|', 'foo', 'bar')`);
253
- });
254
- },
255
- );
256
- });
257
-
258
- describe('Replace', () => {
259
- test(
260
- [
261
- 'SelectQuery',
262
- [
263
- 'Select',
264
- [
265
- [
266
- 'Replace',
267
- ['EmbeddedText', 'foobar'],
268
- ['EmbeddedText', 'bar'],
269
- ['EmbeddedText', 'baz'],
270
- ],
271
- ],
272
- ],
273
- ],
274
- (result, sqlEquals) => {
275
- it('should produce a valid Replace statement', () => {
276
- sqlEquals(result.query, `SELECT REPLACE('foobar', 'bar', 'baz')`);
277
- });
278
- },
279
- );
280
- });
281
-
282
- describe('CharacterLength', () => {
283
- test(
284
- [
285
- 'SelectQuery',
286
- ['Select', [['CharacterLength', ['EmbeddedText', 'foobar']]]],
287
- ],
288
- (result, sqlEquals) => {
289
- it('should produce a valid CharacterLength statement', () => {
290
- sqlEquals(result.query, `SELECT LENGTH('foobar')`);
291
- });
292
- },
293
- );
294
- });
295
-
296
- describe('StrPos', () => {
297
- test(
298
- [
299
- 'SelectQuery',
300
- [
301
- 'Select',
302
- [['StrPos', ['EmbeddedText', 'foobar'], ['EmbeddedText', 'b']]],
303
- ],
304
- ],
305
- (result, sqlEquals) => {
306
- it('should produce a valid StrPos statement', () => {
307
- sqlEquals(result.query, `SELECT STRPOS('foobar', 'b')`);
308
- });
309
- },
310
- );
311
- });
312
-
313
- describe('Duration', () => {
314
- test(
315
- [
316
- 'SelectQuery',
317
- [
318
- 'Select',
319
- [
320
- [
321
- 'Duration',
322
- {
323
- negative: false,
324
- day: 1,
325
- hour: 2,
326
- minute: 3,
327
- second: 4,
328
- },
329
- ],
330
- ],
331
- ],
332
- ],
333
- (result, sqlEquals) => {
334
- it('should produce a valid Duration statement', () => {
335
- sqlEquals(result.query, `SELECT INTERVAL '1 2:3:4.0'`);
336
- });
337
- },
338
- );
339
- });
340
-
341
- describe('Substring', () => {
342
- test(
343
- [
344
- 'SelectQuery',
345
- [
346
- 'Select',
347
- [
348
- [
349
- 'Substring',
350
- ['EmbeddedText', 'foobar'],
351
- ['Number', 0],
352
- ['Number', 5],
353
- ],
354
- ],
355
- ],
356
- ],
357
- (result, sqlEquals) => {
358
- it('should produce a valid Substring statement', () => {
359
- sqlEquals(result.query, `SELECT SUBSTRING('foobar', 0, 5)`);
360
- });
361
- },
362
- );
363
- });
364
-
365
- describe('Right', () => {
366
- test(
367
- [
368
- 'SelectQuery',
369
- ['Select', [['Right', ['EmbeddedText', 'foobar'], ['Number', 1]]]],
370
- ],
371
- (result, sqlEquals) => {
372
- it('should produce a valid Right statement', () => {
373
- sqlEquals(result.query, `SELECT RIGHT('foobar', 1)`);
374
- });
375
- },
376
- );
377
- });
378
-
379
- describe('Lower', () => {
380
- test(
381
- ['SelectQuery', ['Select', [['Lower', ['EmbeddedText', 'FOOBAR']]]]],
382
- (result, sqlEquals) => {
383
- it('should produce a valid Lower statement', () => {
384
- sqlEquals(result.query, `SELECT LOWER('FOOBAR')`);
385
- });
386
- },
387
- );
388
- });
389
-
390
- describe('Upper', () => {
391
- test(
392
- ['SelectQuery', ['Select', [['Upper', ['EmbeddedText', 'foobar']]]]],
393
- (result, sqlEquals) => {
394
- it('should produce a valid Upper statement', () => {
395
- sqlEquals(result.query, `SELECT UPPER('foobar')`);
396
- });
397
- },
398
- );
399
- });
400
-
401
- describe('Trim', () => {
402
- test(
403
- ['SelectQuery', ['Select', [['Trim', ['EmbeddedText', ' foobar ']]]]],
404
- (result, sqlEquals) => {
405
- it('should produce a valid Trim statement', () => {
406
- sqlEquals(result.query, `SELECT TRIM(' foobar ')`);
407
- });
408
- },
409
- );
410
- });
411
-
412
- describe('Round', () => {
413
- test(
414
- ['SelectQuery', ['Select', [['Round', ['Number', 10.4]]]]],
415
- (result, sqlEquals) => {
416
- it('should produce a valid Round statement', () => {
417
- sqlEquals(result.query, `SELECT ROUND(10.4)`);
418
- });
419
- },
420
- );
421
- });
422
-
423
- describe('Floor', () => {
424
- test(
425
- ['SelectQuery', ['Select', [['Floor', ['Number', 10.4]]]]],
426
- (result, sqlEquals) => {
427
- it('should produce a valid Floor statement', () => {
428
- sqlEquals(result.query, `SELECT FLOOR(10.4)`);
429
- });
430
- },
431
- );
432
- });
433
-
434
- describe('Ceiling', () => {
435
- test(
436
- ['SelectQuery', ['Select', [['Ceiling', ['Number', 10.4]]]]],
437
- (result, sqlEquals) => {
438
- it('should produce a valid Ceiling statement', () => {
439
- sqlEquals(result.query, `SELECT CEILING(10.4)`);
440
- });
441
- },
442
- );
443
- });
444
-
445
- describe('ToDate', () => {
446
- test(
447
- ['SelectQuery', ['Select', [['ToDate', ['Date', '2022-10-10']]]]],
448
- [['Date', '2022-10-10']],
449
- (result, sqlEquals) => {
450
- it('should produce a valid ToDate statement', () => {
451
- sqlEquals(result.query, `SELECT DATE($1)`);
452
- });
453
- },
454
- );
455
- });
456
-
457
- describe('DateTrunc', () => {
458
- test(
459
- [
460
- 'SelectQuery',
461
- [
462
- 'Select',
463
- [['DateTrunc', ['EmbeddedText', 'year'], ['Date', '2022-10-10']]],
464
- ],
465
- ],
466
- [['Date', '2022-10-10']],
467
- (result, sqlEquals) => {
468
- it('should produce a valid DateTrunc statement', () => {
469
- sqlEquals(result.query, `SELECT DATE_TRUNC('year', $1)`);
470
- });
471
- },
472
- );
473
- });
474
-
475
- describe('ToTime', () => {
476
- test(
477
- [
478
- 'SelectQuery',
479
- ['Select', [['ToTime', ['Date', '2022-10-10T10:10:10.000Z']]]],
480
- ],
481
- [['Date', '2022-10-10T10:10:10.000Z']],
482
- (result, sqlEquals) => {
483
- it('should produce a valid ToTime statement', () => {
484
- sqlEquals(result.query, `SELECT CAST($1 AS TIME)`);
485
- });
486
- },
487
- );
488
- });
@@ -0,0 +1,156 @@
1
+ import { AbstractSqlQuery } from '../../src/AbstractSQLCompiler';
2
+
3
+ type TestCb = (
4
+ result: { query: string },
5
+ sqlEquals: (a: string, b: string) => void,
6
+ ) => void;
7
+ // tslint:disable-next-line no-var-requires
8
+ const test = require('./test') as (
9
+ query: AbstractSqlQuery,
10
+ binds: any[][] | TestCb,
11
+ cb?: TestCb,
12
+ ) => void;
13
+
14
+ describe('Year', () => {
15
+ test(
16
+ ['SelectQuery', ['Select', [['Year', ['Date', '2022-10-10']]]]],
17
+ [['Date', '2022-10-10']],
18
+ (result, sqlEquals) => {
19
+ it('should produce a valid Year statement', () => {
20
+ sqlEquals(result.query, `SELECT EXTRACT('YEAR' FROM $1)`);
21
+ });
22
+ },
23
+ );
24
+ });
25
+
26
+ describe('Month', () => {
27
+ test(
28
+ ['SelectQuery', ['Select', [['Month', ['Date', '2022-10-10']]]]],
29
+ [['Date', '2022-10-10']],
30
+ (result, sqlEquals) => {
31
+ it('should produce a valid Month statement', () => {
32
+ sqlEquals(result.query, `SELECT EXTRACT('MONTH' FROM $1)`);
33
+ });
34
+ },
35
+ );
36
+ });
37
+
38
+ describe('Day', () => {
39
+ test(
40
+ ['SelectQuery', ['Select', [['Day', ['Date', '2022-10-10']]]]],
41
+ [['Date', '2022-10-10']],
42
+ (result, sqlEquals) => {
43
+ it('should produce a valid Day statement', () => {
44
+ sqlEquals(result.query, `SELECT EXTRACT('DAY' FROM $1)`);
45
+ });
46
+ },
47
+ );
48
+ });
49
+
50
+ describe('Hour', () => {
51
+ test(
52
+ [
53
+ 'SelectQuery',
54
+ ['Select', [['Hour', ['Date', '2022-10-10T10:10:10.000Z']]]],
55
+ ],
56
+ [['Date', '2022-10-10T10:10:10.000Z']],
57
+ (result, sqlEquals) => {
58
+ it('should produce a valid Hour statement', () => {
59
+ sqlEquals(result.query, `SELECT EXTRACT('HOUR' FROM $1)`);
60
+ });
61
+ },
62
+ );
63
+ });
64
+
65
+ describe('Minute', () => {
66
+ test(
67
+ [
68
+ 'SelectQuery',
69
+ ['Select', [['Minute', ['Date', '2022-10-10T10:10:10.000Z']]]],
70
+ ],
71
+ [['Date', '2022-10-10T10:10:10.000Z']],
72
+ (result, sqlEquals) => {
73
+ it('should produce a valid Minute statement', () => {
74
+ sqlEquals(result.query, `SELECT EXTRACT('MINUTE' FROM $1)`);
75
+ });
76
+ },
77
+ );
78
+ });
79
+
80
+ describe('Second', () => {
81
+ test(
82
+ [
83
+ 'SelectQuery',
84
+ ['Select', [['Second', ['Date', '2022-10-10T10:10:10.000Z']]]],
85
+ ],
86
+ [['Date', '2022-10-10T10:10:10.000Z']],
87
+ (result, sqlEquals) => {
88
+ it('should produce a valid extract second statement', () => {
89
+ sqlEquals(result.query, `SELECT FLOOR(EXTRACT('SECOND' FROM $1))`);
90
+ });
91
+ },
92
+ );
93
+ });
94
+
95
+ describe('Fractionalseconds', () => {
96
+ test(
97
+ [
98
+ 'SelectQuery',
99
+ ['Select', [['Fractionalseconds', ['Date', '2022-10-10T10:10:10.000Z']]]],
100
+ ],
101
+ [['Date', '2022-10-10T10:10:10.000Z']],
102
+ (result, sqlEquals) => {
103
+ it('should produce a valid extract Fractionalseconds statement', () => {
104
+ sqlEquals(
105
+ result.query,
106
+ `SELECT EXTRACT('SECOND' FROM $1) - FLOOR(EXTRACT('SECOND' FROM $1))`,
107
+ );
108
+ });
109
+ },
110
+ );
111
+ });
112
+
113
+ describe('ToDate', () => {
114
+ test(
115
+ ['SelectQuery', ['Select', [['ToDate', ['Date', '2022-10-10']]]]],
116
+ [['Date', '2022-10-10']],
117
+ (result, sqlEquals) => {
118
+ it('should produce a valid ToDate statement', () => {
119
+ sqlEquals(result.query, `SELECT DATE($1)`);
120
+ });
121
+ },
122
+ );
123
+ });
124
+
125
+ describe('DateTrunc', () => {
126
+ test(
127
+ [
128
+ 'SelectQuery',
129
+ [
130
+ 'Select',
131
+ [['DateTrunc', ['EmbeddedText', 'year'], ['Date', '2022-10-10']]],
132
+ ],
133
+ ],
134
+ [['Date', '2022-10-10']],
135
+ (result, sqlEquals) => {
136
+ it('should produce a valid DateTrunc statement', () => {
137
+ sqlEquals(result.query, `SELECT DATE_TRUNC('year', $1)`);
138
+ });
139
+ },
140
+ );
141
+ });
142
+
143
+ describe('ToTime', () => {
144
+ test(
145
+ [
146
+ 'SelectQuery',
147
+ ['Select', [['ToTime', ['Date', '2022-10-10T10:10:10.000Z']]]],
148
+ ],
149
+ [['Date', '2022-10-10T10:10:10.000Z']],
150
+ (result, sqlEquals) => {
151
+ it('should produce a valid ToTime statement', () => {
152
+ sqlEquals(result.query, `SELECT CAST($1 AS TIME)`);
153
+ });
154
+ },
155
+ );
156
+ });
@@ -0,0 +1,70 @@
1
+ import { AbstractSqlQuery } from '../../src/AbstractSQLCompiler';
2
+
3
+ type TestCb = (
4
+ result: { query: string },
5
+ sqlEquals: (a: string, b: string) => void,
6
+ ) => void;
7
+ // tslint:disable-next-line no-var-requires
8
+ const test = require('./test') as (
9
+ query: AbstractSqlQuery,
10
+ binds: any[][] | TestCb,
11
+ cb?: TestCb,
12
+ ) => void;
13
+
14
+ describe('Totalseconds', () => {
15
+ test(
16
+ [
17
+ 'SelectQuery',
18
+ [
19
+ 'Select',
20
+ [
21
+ [
22
+ 'Totalseconds',
23
+ [
24
+ 'Duration',
25
+ {
26
+ day: 1,
27
+ },
28
+ ],
29
+ ],
30
+ ],
31
+ ],
32
+ ],
33
+ (result, sqlEquals) => {
34
+ it('should produce a valid Totalseconds statement', () => {
35
+ sqlEquals(
36
+ result.query,
37
+ `SELECT EXTRACT(EPOCH FROM INTERVAL '1 0:0:0.0')`,
38
+ );
39
+ });
40
+ },
41
+ );
42
+ });
43
+
44
+ describe('Duration', () => {
45
+ test(
46
+ [
47
+ 'SelectQuery',
48
+ [
49
+ 'Select',
50
+ [
51
+ [
52
+ 'Duration',
53
+ {
54
+ negative: false,
55
+ day: 1,
56
+ hour: 2,
57
+ minute: 3,
58
+ second: 4,
59
+ },
60
+ ],
61
+ ],
62
+ ],
63
+ ],
64
+ (result, sqlEquals) => {
65
+ it('should produce a valid Duration statement', () => {
66
+ sqlEquals(result.query, `SELECT INTERVAL '1 2:3:4.0'`);
67
+ });
68
+ },
69
+ );
70
+ });
@@ -0,0 +1,89 @@
1
+ import { AbstractSqlQuery } from '../../src/AbstractSQLCompiler';
2
+
3
+ type TestCb = (
4
+ result: { query: string },
5
+ sqlEquals: (a: string, b: string) => void,
6
+ ) => void;
7
+ // tslint:disable-next-line no-var-requires
8
+ const test = require('./test') as (
9
+ query: AbstractSqlQuery,
10
+ binds: any[][] | TestCb,
11
+ cb?: TestCb,
12
+ ) => void;
13
+
14
+ describe('Add', () => {
15
+ test(
16
+ ['SelectQuery', ['Select', [['Add', ['Number', 5], ['Number', 3]]]]],
17
+ (result, sqlEquals) => {
18
+ it('should produce a valid Add statement', () => {
19
+ sqlEquals(result.query, 'SELECT 5 + 3');
20
+ });
21
+ },
22
+ );
23
+ });
24
+
25
+ describe('Subtract', () => {
26
+ test(
27
+ ['SelectQuery', ['Select', [['Subtract', ['Number', 5], ['Number', 3]]]]],
28
+ (result, sqlEquals) => {
29
+ it('should produce a valid Subtract statement', () => {
30
+ sqlEquals(result.query, 'SELECT 5 - 3');
31
+ });
32
+ },
33
+ );
34
+ });
35
+
36
+ describe('Multiply', () => {
37
+ test(
38
+ ['SelectQuery', ['Select', [['Multiply', ['Number', 5], ['Number', 3]]]]],
39
+ (result, sqlEquals) => {
40
+ it('should produce a valid Multiply statement', () => {
41
+ sqlEquals(result.query, 'SELECT 5 * 3');
42
+ });
43
+ },
44
+ );
45
+ });
46
+
47
+ describe('Divide', () => {
48
+ test(
49
+ ['SelectQuery', ['Select', [['Divide', ['Number', 10], ['Number', 5]]]]],
50
+ (result, sqlEquals) => {
51
+ it('should produce a valid Divide statement', () => {
52
+ sqlEquals(result.query, 'SELECT 10 / 5');
53
+ });
54
+ },
55
+ );
56
+ });
57
+
58
+ describe('Round', () => {
59
+ test(
60
+ ['SelectQuery', ['Select', [['Round', ['Number', 10.4]]]]],
61
+ (result, sqlEquals) => {
62
+ it('should produce a valid Round statement', () => {
63
+ sqlEquals(result.query, `SELECT ROUND(10.4)`);
64
+ });
65
+ },
66
+ );
67
+ });
68
+
69
+ describe('Floor', () => {
70
+ test(
71
+ ['SelectQuery', ['Select', [['Floor', ['Number', 10.4]]]]],
72
+ (result, sqlEquals) => {
73
+ it('should produce a valid Floor statement', () => {
74
+ sqlEquals(result.query, `SELECT FLOOR(10.4)`);
75
+ });
76
+ },
77
+ );
78
+ });
79
+
80
+ describe('Ceiling', () => {
81
+ test(
82
+ ['SelectQuery', ['Select', [['Ceiling', ['Number', 10.4]]]]],
83
+ (result, sqlEquals) => {
84
+ it('should produce a valid Ceiling statement', () => {
85
+ sqlEquals(result.query, `SELECT CEILING(10.4)`);
86
+ });
87
+ },
88
+ );
89
+ });
@@ -0,0 +1,179 @@
1
+ import { AbstractSqlQuery } from '../../src/AbstractSQLCompiler';
2
+
3
+ type TestCb = (
4
+ result: { query: string },
5
+ sqlEquals: (a: string, b: string) => void,
6
+ ) => void;
7
+ // tslint:disable-next-line no-var-requires
8
+ const test = require('./test') as (
9
+ query: AbstractSqlQuery,
10
+ binds: any[][] | TestCb,
11
+ cb?: TestCb,
12
+ ) => void;
13
+
14
+ describe('Concatenate', () => {
15
+ test(
16
+ [
17
+ 'SelectQuery',
18
+ [
19
+ 'Select',
20
+ [['Concatenate', ['EmbeddedText', 'foo'], ['EmbeddedText', 'bar']]],
21
+ ],
22
+ ],
23
+ (result, sqlEquals) => {
24
+ it('should produce a valid Concatenate statement', () => {
25
+ sqlEquals(result.query, `SELECT ('foo' || 'bar')`);
26
+ });
27
+ },
28
+ );
29
+ });
30
+
31
+ describe('ConcatenateWithSeparator', () => {
32
+ test(
33
+ [
34
+ 'SelectQuery',
35
+ [
36
+ 'Select',
37
+ [
38
+ [
39
+ 'ConcatenateWithSeparator',
40
+ ['EmbeddedText', '|'],
41
+ ['EmbeddedText', 'foo'],
42
+ ['EmbeddedText', 'bar'],
43
+ ],
44
+ ],
45
+ ],
46
+ ],
47
+ (result, sqlEquals) => {
48
+ it('should produce a valid ConcatenateWithSeparator statement', () => {
49
+ sqlEquals(result.query, `SELECT CONCAT_WS('|', 'foo', 'bar')`);
50
+ });
51
+ },
52
+ );
53
+ });
54
+
55
+ describe('Replace', () => {
56
+ test(
57
+ [
58
+ 'SelectQuery',
59
+ [
60
+ 'Select',
61
+ [
62
+ [
63
+ 'Replace',
64
+ ['EmbeddedText', 'foobar'],
65
+ ['EmbeddedText', 'bar'],
66
+ ['EmbeddedText', 'baz'],
67
+ ],
68
+ ],
69
+ ],
70
+ ],
71
+ (result, sqlEquals) => {
72
+ it('should produce a valid Replace statement', () => {
73
+ sqlEquals(result.query, `SELECT REPLACE('foobar', 'bar', 'baz')`);
74
+ });
75
+ },
76
+ );
77
+ });
78
+
79
+ describe('CharacterLength', () => {
80
+ test(
81
+ [
82
+ 'SelectQuery',
83
+ ['Select', [['CharacterLength', ['EmbeddedText', 'foobar']]]],
84
+ ],
85
+ (result, sqlEquals) => {
86
+ it('should produce a valid CharacterLength statement', () => {
87
+ sqlEquals(result.query, `SELECT LENGTH('foobar')`);
88
+ });
89
+ },
90
+ );
91
+ });
92
+
93
+ describe('StrPos', () => {
94
+ test(
95
+ [
96
+ 'SelectQuery',
97
+ [
98
+ 'Select',
99
+ [['StrPos', ['EmbeddedText', 'foobar'], ['EmbeddedText', 'b']]],
100
+ ],
101
+ ],
102
+ (result, sqlEquals) => {
103
+ it('should produce a valid StrPos statement', () => {
104
+ sqlEquals(result.query, `SELECT STRPOS('foobar', 'b')`);
105
+ });
106
+ },
107
+ );
108
+ });
109
+
110
+ describe('Substring', () => {
111
+ test(
112
+ [
113
+ 'SelectQuery',
114
+ [
115
+ 'Select',
116
+ [
117
+ [
118
+ 'Substring',
119
+ ['EmbeddedText', 'foobar'],
120
+ ['Number', 0],
121
+ ['Number', 5],
122
+ ],
123
+ ],
124
+ ],
125
+ ],
126
+ (result, sqlEquals) => {
127
+ it('should produce a valid Substring statement', () => {
128
+ sqlEquals(result.query, `SELECT SUBSTRING('foobar', 0, 5)`);
129
+ });
130
+ },
131
+ );
132
+ });
133
+
134
+ describe('Right', () => {
135
+ test(
136
+ [
137
+ 'SelectQuery',
138
+ ['Select', [['Right', ['EmbeddedText', 'foobar'], ['Number', 1]]]],
139
+ ],
140
+ (result, sqlEquals) => {
141
+ it('should produce a valid Right statement', () => {
142
+ sqlEquals(result.query, `SELECT RIGHT('foobar', 1)`);
143
+ });
144
+ },
145
+ );
146
+ });
147
+
148
+ describe('Lower', () => {
149
+ test(
150
+ ['SelectQuery', ['Select', [['Lower', ['EmbeddedText', 'FOOBAR']]]]],
151
+ (result, sqlEquals) => {
152
+ it('should produce a valid Lower statement', () => {
153
+ sqlEquals(result.query, `SELECT LOWER('FOOBAR')`);
154
+ });
155
+ },
156
+ );
157
+ });
158
+
159
+ describe('Upper', () => {
160
+ test(
161
+ ['SelectQuery', ['Select', [['Upper', ['EmbeddedText', 'foobar']]]]],
162
+ (result, sqlEquals) => {
163
+ it('should produce a valid Upper statement', () => {
164
+ sqlEquals(result.query, `SELECT UPPER('foobar')`);
165
+ });
166
+ },
167
+ );
168
+ });
169
+
170
+ describe('Trim', () => {
171
+ test(
172
+ ['SelectQuery', ['Select', [['Trim', ['EmbeddedText', ' foobar ']]]]],
173
+ (result, sqlEquals) => {
174
+ it('should produce a valid Trim statement', () => {
175
+ sqlEquals(result.query, `SELECT TRIM(' foobar ')`);
176
+ });
177
+ },
178
+ );
179
+ });