@@ -23,6 +23,7 @@ import {
2323 div ,
2424 diseSet ,
2525 DiNotInitializedError ,
26+ DependencyNotRegisteredError ,
2627} from './index.js'
2728import EventEmitter from 'node:events'
2829import { setImmediate } from 'node:timers'
@@ -590,3 +591,39 @@ test('div', () => {
590591 assert . strictEqual ( n ( ) , 10 )
591592 } )
592593} )
594+
595+ test ( 'als disable throws diInit not registered' , ( ) => {
596+ const obj = { test : true }
597+ diInit ( ( ) => {
598+ diSet ( 'obj' , obj )
599+ als . disable ( )
600+ assert . throws ( ( ) => diDep ( 'obj' ) , DiNotInitializedError )
601+ } )
602+ } )
603+
604+ test ( 'als disable inside setImmediate also throws diInit not registered' , async ( ) => {
605+ const obj = { test : true }
606+ diInit ( async ( ) => {
607+ diSet ( 'obj' , obj )
608+ setImmediate ( ( ) => als . disable ( ) )
609+ await setTimeoutP ( 10 )
610+ assert . throws ( ( ) => diDep ( 'obj' ) , DiNotInitializedError )
611+ } )
612+ } )
613+
614+ test ( 'reinit inside als exit' , ( ) => {
615+ diInit ( ( ) => {
616+ diSet ( 'outer' , true )
617+ assert . strictEqual ( diExists ( ) , true )
618+ assert . strictEqual ( diDep ( 'outer' ) , true )
619+ als . exit ( ( ) => {
620+ assert . strictEqual ( diExists ( ) , false )
621+ diInit ( ( ) => {
622+ diSet ( 'inner' , true )
623+ assert . strictEqual ( diExists ( ) , true )
624+ assert . strictEqual ( diDep ( 'inner' ) , true )
625+ assert . throws ( ( ) => diDep ( 'outer' ) , DependencyNotRegisteredError )
626+ } )
627+ } )
628+ } )
629+ } )
0 commit comments