Skip to content

Commit 29c87b9

Browse files
committed
Add a test for transactions.
Related to https://github.com/kripken/sql.js/issues/116
1 parent a46d4e2 commit 29c87b9

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

test/test_transactions.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
exports.test = function(SQL, assert){
2+
var db = new SQL.Database();
3+
db.exec("CREATE TABLE test (data); INSERT INTO test VALUES (1);");
4+
5+
// Open a transaction
6+
db.exec("BEGIN TRANSACTION;");
7+
8+
// Insert a row
9+
db.exec("INSERT INTO test VALUES (4);")
10+
11+
// Rollback
12+
db.exec("ROLLBACK;");
13+
14+
var res = db.exec("SELECT data FROM test WHERE data = 4;");
15+
var expectedResult = [];
16+
assert.deepEqual(res, expectedResult, "transaction rollbacks work");
17+
18+
// Open a transaction
19+
db.exec("BEGIN TRANSACTION;");
20+
21+
// Insert a row
22+
db.exec("INSERT INTO test VALUES (4);")
23+
24+
// Commit
25+
db.exec("COMMIT;");
26+
27+
var res = db.exec("SELECT data FROM test WHERE data = 4;");
28+
var expectedResult = [{
29+
columns : ['data'],
30+
values : [
31+
[4]
32+
]
33+
}];
34+
assert.deepEqual(res, expectedResult, "transaction commits work");
35+
36+
// Open a transaction
37+
db.exec("BEGIN TRANSACTION;");
38+
39+
// Insert a row
40+
db.exec("INSERT INTO test VALUES (5);")
41+
42+
// Rollback
43+
db.exec("ROLLBACK;");
44+
45+
var res = db.exec("SELECT data FROM test WHERE data IN (4,5);");
46+
var expectedResult = [{
47+
columns : ['data'],
48+
values : [
49+
[4]
50+
]
51+
}];
52+
assert.deepEqual(res, expectedResult, "transaction rollbacks after commits work");
53+
54+
db.close();
55+
};
56+
57+
if (module == require.main) {
58+
var sql = require('../js/sql.js');
59+
var assert = require("assert");
60+
exports.test(sql, assert);
61+
}

0 commit comments

Comments
 (0)