@@ -8,13 +8,15 @@ describe('DialogManager', () => {
88 const dialogManager = new DialogManager ( { id } ) ;
99 expect ( dialogManager . id ) . toBe ( id ) ;
1010 } ) ;
11+
1112 it ( 'initiates with default options' , ( ) => {
1213 const mockedId = '12345' ;
1314 const spy = jest . spyOn ( Date . prototype , 'getTime' ) . mockReturnValueOnce ( mockedId ) ;
1415 const dialogManager = new DialogManager ( ) ;
1516 expect ( dialogManager . id ) . toBe ( mockedId ) ;
1617 spy . mockRestore ( ) ;
1718 } ) ;
19+
1820 it ( 'creates a new closed dialog' , ( ) => {
1921 const dialogManager = new DialogManager ( ) ;
2022 expect ( Object . keys ( dialogManager . state . getLatestValue ( ) . dialogsById ) ) . toHaveLength ( 0 ) ;
@@ -142,4 +144,33 @@ describe('DialogManager', () => {
142144 expect ( dialogManager . openDialogCount ) . toBe ( 1 ) ;
143145 expect ( Object . keys ( dialogManager . state . getLatestValue ( ) . dialogsById ) ) . toHaveLength ( 1 ) ;
144146 } ) ;
147+
148+ it ( 'marks dialog for removal' , ( ) => {
149+ jest . useFakeTimers ( ) ;
150+
151+ const dialogManager = new DialogManager ( ) ;
152+ dialogManager . getOrCreate ( { id : dialogId } ) ;
153+ dialogManager . open ( { id : dialogId } ) ;
154+ dialogManager . markForRemoval ( dialogId ) ;
155+
156+ jest . runAllTimers ( ) ;
157+
158+ expect ( dialogManager . openDialogCount ) . toBe ( 0 ) ;
159+ expect ( Object . keys ( dialogManager . state . getLatestValue ( ) . dialogsById ) ) . toHaveLength ( 0 ) ;
160+ } ) ;
161+
162+ it ( 'cancels dialog removal if it is referenced again quickly' , ( ) => {
163+ jest . useFakeTimers ( ) ;
164+
165+ const dialogManager = new DialogManager ( ) ;
166+ dialogManager . getOrCreate ( { id : dialogId } ) ;
167+ dialogManager . open ( { id : dialogId } ) ;
168+ dialogManager . markForRemoval ( dialogId ) ;
169+ dialogManager . getOrCreate ( { id : dialogId } ) ;
170+
171+ jest . runAllTimers ( ) ;
172+
173+ expect ( dialogManager . openDialogCount ) . toBe ( 1 ) ;
174+ expect ( Object . keys ( dialogManager . state . getLatestValue ( ) . dialogsById ) ) . toHaveLength ( 1 ) ;
175+ } ) ;
145176} ) ;
0 commit comments