@@ -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