|
1 | 1 | import { SQLJob } from "../../../connection/sqlJob"; |
2 | 2 | import { TestCase } from "../../../testing"; |
3 | 3 | import assert from "assert"; |
| 4 | +import { SelfCodeNode, SelfValue } from "./nodes"; |
| 5 | +import { QueryResult } from "../../../connection/types"; |
4 | 6 |
|
5 | 7 | export const selfCodeTests = [ |
6 | 8 | { |
7 | | - name: "SQL0138 - Left-most 1001 characters of C2", |
8 | | - code: "138", |
9 | | - sql: "SELECT LEFT(C2, 1001) FROM SELFTEST.MYTBL", |
| 9 | + name: "Trigger an error", |
| 10 | + code: "*ERROR", |
| 11 | + sql: "SELECT * from qsys2.noexist", |
10 | 12 | }, |
11 | 13 | { |
12 | | - name: "SQL0180 - Invalid format for date", |
13 | | - code: "180", |
14 | | - sql: "VALUES DATE('120-1231-12312')", |
15 | | - }, |
16 | | - { |
17 | | - name: "SQL0181 - Date that doesn't exist", |
18 | | - code: "181", |
19 | | - sql: "VALUES DATE('2023-45-45')", |
20 | | - }, |
21 | | - { |
22 | | - name: "SQL0182 - Valid datetime, invalid context", |
23 | | - code: "182", |
24 | | - sql: "SELECT C3/C4 FROM SELFTEST.MYTBL", |
25 | | - }, |
26 | | - { |
27 | | - name: "SQL0199 - Invalid syntax", |
28 | | - code: "199", |
29 | | - sql: "SELECT * FROM SELFTEST.MYTBL WHERE ORDER BY C1", |
30 | | - }, |
31 | | - { |
32 | | - name: "SQL0203 - C2 without table name", |
33 | | - code: "203", |
34 | | - sql: "SELECT C2 FROM SELFTEST.MYTBL T1 JOIN SELFTEST.MYTBL2 T2 ON T1.C1 = T2.C1", |
35 | | - }, |
36 | | - { |
37 | | - name: "SQL0204 - Table doesn't exist", |
38 | | - code: "204", |
39 | | - sql: "SELECT * FROM NOEXIST", |
40 | | - }, |
41 | | - { |
42 | | - name: "SQL0206 - Column doesn't exist", |
43 | | - code: "206", |
44 | | - sql: "SELECT NOCOL FROM SELFTEST.MYTBL", |
45 | | - }, |
46 | | - { |
47 | | - name: "SQL0420 - Can't cast varchar to int", |
48 | | - code: "420", |
49 | | - sql: "SELECT CAST(SELFTEST.MYTBL.C2 AS INT) FROM SELFTEST.MYTBL", |
50 | | - }, |
51 | | - // this is a sqpecial case, need to think about how to test this one |
52 | | - // { |
53 | | - // name: 'SQL0551 - User profile NOGOOD has no authority', |
54 | | - // code: '551', |
55 | | - // sql: 'CL: CRTUSRPRF USRPRF(NOGOOD); SET SESSION AUTHORIZATION NOGOOD; SELECT * FROM SELFTEST.MYTBL2; DISCONNECT CURRENT; SET SCHEMA SELFTEST; CL: DLTUSRPRF USRPRF(NOGOOD);', |
56 | | - // }, |
57 | | - { |
58 | | - name: "SQL0811 - Subquery returns multiple rows", |
59 | | - code: "811", |
60 | | - sql: "UPDATE SELFTEST.MYTBL SET C1 = (SELECT C1 FROM SELFTEST.MYTBL2)", |
61 | | - }, |
| 14 | + name: "Tigger a warning", |
| 15 | + code: "*WARNING", |
| 16 | + sql: "SELECT LEFT(C2, 1001) FROM SELFTEST.MYTBL" |
| 17 | + } |
62 | 18 | ]; |
63 | 19 |
|
64 | 20 | export function testSelfCodes(): TestCase[] { |
65 | 21 | let tests: TestCase[] = []; |
| 22 | + const content = `SELECT job_name, matches FROM qsys2.sql_error_log where job_name = ?`; |
| 23 | + let before: string; |
| 24 | + let after: string; |
66 | 25 | for (const test of selfCodeTests) { |
67 | 26 | const testCase: TestCase = { |
68 | 27 | name: `Self code Error for test ${test.name}`, |
69 | 28 | test: async () => { |
70 | 29 | let newJob = new SQLJob(); |
71 | 30 | await newJob.connect(); |
72 | | - await newJob.setSelfState(test.code); |
| 31 | + await newJob.setSelfState(test.code as SelfValue); |
73 | 32 | try { |
74 | 33 | await newJob.query(test.sql).run(); |
75 | 34 | } catch (e) {} |
76 | | - |
77 | | - const content = `SELECT * FROM QSYS2.SQL_ERROR_LOG WHERE JOB_NAME = '${newJob.id}'`; |
78 | | - let errors = await newJob.query(content).run(); |
79 | | - assert.strictEqual(errors.data.length, 1); |
| 35 | + let result = await newJob.query(content, {parameters: [newJob.id]}).run(); |
| 36 | + assert(result.data[0]['MATCHES'] >= 1); |
| 37 | + |
80 | 38 | newJob.close(); |
81 | 39 | }, |
82 | 40 | }; |
|
0 commit comments