Skip to content

Commit 81d2d8f

Browse files
committed
test: cover sqlite iterators after database close
1 parent 85c2832 commit 81d2d8f

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

test/parallel/test-sqlite-database-sync-dispose.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ suite('DatabaseSync.prototype[Symbol.dispose]()', () => {
4040

4141
const select = db.prepare('SELECT * FROM data');
4242
const insert = db.prepare('INSERT INTO data (key, val) VALUES (?, ?)');
43+
const iterator = select.iterate();
4344

4445
db[Symbol.dispose]();
4546
assert.strictEqual(db.isOpen, false);
@@ -65,11 +66,23 @@ suite('DatabaseSync.prototype[Symbol.dispose]()', () => {
6566
code: 'ERR_INVALID_STATE',
6667
message: /statement has been finalized/,
6768
});
69+
assert.throws(() => {
70+
select.iterate();
71+
}, {
72+
code: 'ERR_INVALID_STATE',
73+
message: /statement has been finalized/,
74+
});
6875
assert.throws(() => {
6976
insert.run(2, 4);
7077
}, {
7178
code: 'ERR_INVALID_STATE',
7279
message: /statement has been finalized/,
7380
});
81+
assert.throws(() => {
82+
iterator.next();
83+
}, {
84+
code: 'ERR_INVALID_STATE',
85+
message: /statement has been finalized/,
86+
});
7487
});
7588
});

test/parallel/test-sqlite-database-sync.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ suite('DatabaseSync.prototype.close()', () => {
353353

354354
const select = db.prepare('SELECT * FROM data');
355355
const insert = db.prepare('INSERT INTO data (key, val) VALUES (?, ?)');
356+
const iterator = select.iterate();
356357

357358
t.assert.strictEqual(db.close(), undefined);
358359
t.assert.strictEqual(db.isOpen, false);
@@ -378,12 +379,24 @@ suite('DatabaseSync.prototype.close()', () => {
378379
code: 'ERR_INVALID_STATE',
379380
message: /statement has been finalized/,
380381
});
382+
t.assert.throws(() => {
383+
select.iterate();
384+
}, {
385+
code: 'ERR_INVALID_STATE',
386+
message: /statement has been finalized/,
387+
});
381388
t.assert.throws(() => {
382389
insert.run(2, 4);
383390
}, {
384391
code: 'ERR_INVALID_STATE',
385392
message: /statement has been finalized/,
386393
});
394+
t.assert.throws(() => {
395+
iterator.next();
396+
}, {
397+
code: 'ERR_INVALID_STATE',
398+
message: /statement has been finalized/,
399+
});
387400
});
388401

389402
test('keeps prepared statements invalid after reopening', (t) => {
@@ -399,6 +412,7 @@ suite('DatabaseSync.prototype.close()', () => {
399412

400413
const select = db.prepare('SELECT * FROM data');
401414
const insert = db.prepare('INSERT INTO data (key, val) VALUES (?, ?)');
415+
const iterator = select.iterate();
402416

403417
db.close();
404418
db.open();
@@ -415,12 +429,24 @@ suite('DatabaseSync.prototype.close()', () => {
415429
code: 'ERR_INVALID_STATE',
416430
message: /statement has been finalized/,
417431
});
432+
t.assert.throws(() => {
433+
select.iterate();
434+
}, {
435+
code: 'ERR_INVALID_STATE',
436+
message: /statement has been finalized/,
437+
});
418438
t.assert.throws(() => {
419439
insert.run(2, 4);
420440
}, {
421441
code: 'ERR_INVALID_STATE',
422442
message: /statement has been finalized/,
423443
});
444+
t.assert.throws(() => {
445+
iterator.next();
446+
}, {
447+
code: 'ERR_INVALID_STATE',
448+
message: /statement has been finalized/,
449+
});
424450

425451
t.assert.deepStrictEqual(
426452
db.prepare('SELECT * FROM data').all(),

0 commit comments

Comments
 (0)