Skip to content

Commit 4606806

Browse files
committed
test: add transaction queuing test
1 parent dc25ef3 commit 4606806

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

example/src/tests/unit/specs/transaction.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,5 +431,50 @@ export default function registerTransactionUnitTests() {
431431
else expect.fail('Should have thrown a valid NitroSQLiteException')
432432
}
433433
})
434+
435+
it('transaction are queued', async () => {
436+
const transaction1Promise = testDb.transaction(async (tx) => {
437+
tx.execute('SELECT * FROM [User];')
438+
439+
expect(testDbQueue.queue.length).to.equal(2)
440+
expect(testDbQueue.inProgress).to.equal(true)
441+
442+
await new Promise<void>((resolve) => setTimeout(resolve, 100))
443+
444+
tx.execute('SELECT * FROM [User];')
445+
446+
expect(testDbQueue.queue.length).to.equal(2)
447+
expect(testDbQueue.inProgress).to.equal(true)
448+
})
449+
450+
expect(testDbQueue.inProgress).to.equal(true)
451+
expect(testDbQueue.queue.length).to.equal(0)
452+
453+
const transaction2Promise = testDb.transaction(async (tx) => {
454+
tx.execute('SELECT * FROM [User];')
455+
})
456+
457+
expect(testDbQueue.queue.length).to.equal(1)
458+
expect(testDbQueue.inProgress).to.equal(true)
459+
460+
const transaction3Promise = testDb.transaction(async (tx) => {
461+
tx.execute('SELECT * FROM [User];')
462+
})
463+
464+
await transaction1Promise
465+
466+
expect(testDbQueue.queue.length).to.equal(1)
467+
expect(testDbQueue.inProgress).to.equal(true)
468+
469+
await transaction2Promise
470+
471+
expect(testDbQueue.queue.length).to.equal(0)
472+
expect(testDbQueue.inProgress).to.equal(true)
473+
474+
await transaction3Promise
475+
476+
expect(testDbQueue.queue.length).to.equal(0)
477+
expect(testDbQueue.inProgress).to.equal(false)
478+
})
434479
})
435480
}

0 commit comments

Comments
 (0)