Skip to content

Commit 0029abe

Browse files
committed
Add test for #1119 without fix
1 parent d97d3cc commit 0029abe

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed

test/test1119.js

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
if (typeof exports === 'object') {
2+
var assert = require('assert');
3+
var alasql = require('..'); // You might need to adjust the path depending on where you save the test file
4+
}
5+
6+
describe.skip('Test 1119 - Trigger callback parameter', function () {
7+
const test = '1119'; // Test file number
8+
9+
before(function () {
10+
alasql('CREATE DATABASE test' + test);
11+
alasql('USE test' + test);
12+
});
13+
14+
after(function () {
15+
alasql('DROP DATABASE test' + test);
16+
});
17+
18+
it('A) BEFORE INSERT trigger callback should receive the inserted row', function () {
19+
let triggerReceivedCorrectData = false; // Flag to check if trigger got the right data
20+
let receivedValue = undefined;
21+
22+
// Define the trigger function
23+
alasql.fn.onchangeInsert = function (r) {
24+
receivedValue = r; // Store received value for debugging if needed
25+
// Check if 'r' is defined and has the correct property 'a' with value 123
26+
if (r && r.a === 123) {
27+
triggerReceivedCorrectData = true;
28+
}
29+
};
30+
31+
// Setup table and trigger
32+
alasql('CREATE TABLE one (a INT)');
33+
alasql('CREATE TRIGGER two BEFORE INSERT ON one CALL onchangeInsert()');
34+
35+
// Execute the insert that should fire the trigger
36+
alasql('INSERT INTO one VALUES (123)');
37+
38+
// Assert that the flag was set, meaning the trigger function received the correct data
39+
assert(
40+
triggerReceivedCorrectData,
41+
'BEFORE INSERT trigger function did not receive the expected data. Received: ' +
42+
JSON.stringify(receivedValue)
43+
);
44+
45+
// Clean up the function to avoid side effects in other tests
46+
delete alasql.fn.onchangeInsert;
47+
});
48+
49+
it('B) AFTER INSERT trigger callback should receive the inserted row', function () {
50+
let triggerReceivedCorrectData = false;
51+
let receivedValue = undefined;
52+
53+
alasql.fn.onchangeAfterInsert = function (r) {
54+
receivedValue = r;
55+
if (r && r.a === 456) {
56+
triggerReceivedCorrectData = true;
57+
}
58+
};
59+
60+
alasql('CREATE TABLE two (a INT)');
61+
alasql('CREATE TRIGGER three AFTER INSERT ON two CALL onchangeAfterInsert()');
62+
alasql('INSERT INTO two VALUES (456)');
63+
64+
assert(
65+
triggerReceivedCorrectData,
66+
'AFTER INSERT trigger function did not receive the expected data. Received: ' +
67+
JSON.stringify(receivedValue)
68+
);
69+
70+
delete alasql.fn.onchangeAfterInsert;
71+
});
72+
73+
it('C) BEFORE UPDATE trigger callback should receive old and new row data', function () {
74+
let triggerReceivedCorrectData = false;
75+
let receivedOldValue = undefined;
76+
let receivedNewValue = undefined;
77+
78+
alasql.fn.onchangeUpdate = function (oldRow, newRow) {
79+
receivedOldValue = oldRow;
80+
receivedNewValue = newRow;
81+
if (oldRow && oldRow.a === 789 && newRow && newRow.a === 999) {
82+
triggerReceivedCorrectData = true;
83+
}
84+
};
85+
86+
alasql('CREATE TABLE three (a INT)');
87+
alasql('INSERT INTO three VALUES (789)');
88+
alasql('CREATE TRIGGER four BEFORE UPDATE ON three CALL onchangeUpdate()');
89+
alasql('UPDATE three SET a = 999 WHERE a = 789');
90+
91+
assert(
92+
triggerReceivedCorrectData,
93+
'BEFORE UPDATE trigger function did not receive the expected data. Received old: ' +
94+
JSON.stringify(receivedOldValue) +
95+
', new: ' +
96+
JSON.stringify(receivedNewValue)
97+
);
98+
99+
delete alasql.fn.onchangeUpdate;
100+
});
101+
102+
it('D) BEFORE DELETE trigger callback should receive the row being deleted', function () {
103+
let triggerReceivedCorrectData = false;
104+
let receivedValue = undefined;
105+
106+
alasql.fn.onchangeDelete = function (r) {
107+
receivedValue = r;
108+
if (r && r.a === 111) {
109+
triggerReceivedCorrectData = true;
110+
}
111+
};
112+
113+
alasql('CREATE TABLE four (a INT)');
114+
alasql('INSERT INTO four VALUES (111)');
115+
alasql('CREATE TRIGGER five BEFORE DELETE ON four CALL onchangeDelete()');
116+
alasql('DELETE FROM four WHERE a = 111');
117+
118+
assert(
119+
triggerReceivedCorrectData,
120+
'BEFORE DELETE trigger function did not receive the expected data. Received: ' +
121+
JSON.stringify(receivedValue)
122+
);
123+
124+
delete alasql.fn.onchangeDelete;
125+
});
126+
127+
it('E) INSTEAD OF INSERT trigger callback should receive the row', function () {
128+
let triggerReceivedCorrectData = false;
129+
let receivedValue = undefined;
130+
131+
alasql.fn.onchangeInsteadInsert = function (r) {
132+
receivedValue = r;
133+
if (r && r.a === 222) {
134+
triggerReceivedCorrectData = true;
135+
// Example: We could manually insert or modify 'r' here if needed
136+
}
137+
};
138+
139+
alasql('CREATE TABLE five (a INT)');
140+
alasql('CREATE TRIGGER six INSTEAD OF INSERT ON five CALL onchangeInsteadInsert()');
141+
alasql('INSERT INTO five VALUES (222)'); // This should fire the trigger but not insert data by default
142+
143+
// Check that the trigger function received the data
144+
assert(
145+
triggerReceivedCorrectData,
146+
'INSTEAD OF INSERT trigger function did not receive the expected data. Received: ' +
147+
JSON.stringify(receivedValue)
148+
);
149+
150+
// Verify that the data was NOT actually inserted because it was an INSTEAD OF trigger
151+
const res = alasql('SELECT * FROM five');
152+
assert.deepEqual(res, [], 'Data should not have been inserted with INSTEAD OF trigger');
153+
154+
delete alasql.fn.onchangeInsteadInsert;
155+
});
156+
});

0 commit comments

Comments
 (0)