@@ -348,32 +348,42 @@ export default () => {
348
348
} ) ;
349
349
350
350
it ( "overrides content classes with custom object className" , ( ) => {
351
- const props = {
352
- isOpen : true ,
353
- className : {
354
- base : "myClass" ,
355
- afterOpen : "myClass_after-open" ,
356
- beforeClose : "myClass_before-close"
357
- }
358
- } ;
359
- withModal ( props , null , modal => {
360
- mcontent ( modal ) . className . should . be . eql ( "myClass myClass_after-open" ) ;
351
+ withElementCollector ( ( ) => {
352
+ const props = {
353
+ isOpen : true ,
354
+ className : {
355
+ base : "myClass" ,
356
+ afterOpen : "myClass_after-open" ,
357
+ beforeClose : "myClass_before-close"
358
+ }
359
+ } ;
360
+ const node = createHTMLElement ( "div" ) ;
361
+ const modal = ReactDOM . render ( < Modal { ...props } /> , node ) ;
362
+ requestAnimationFrame ( ( ) => {
363
+ mcontent ( modal ) . className . should . be . eql ( "myClass myClass_after-open" ) ;
364
+ ReactDOM . unmountComponentAtNode ( node ) ;
365
+ } ) ;
361
366
} ) ;
362
367
} ) ;
363
368
364
369
it ( "overrides overlay classes with custom object overlayClassName" , ( ) => {
365
- const props = {
366
- isOpen : true ,
367
- overlayClassName : {
368
- base : "myOverlayClass" ,
369
- afterOpen : "myOverlayClass_after-open" ,
370
- beforeClose : "myOverlayClass_before-close"
371
- }
372
- } ;
373
- withModal ( props , null , modal => {
374
- moverlay ( modal ) . className . should . be . eql (
375
- "myOverlayClass myOverlayClass_after-open"
376
- ) ;
370
+ withElementCollector ( ( ) => {
371
+ const props = {
372
+ isOpen : true ,
373
+ overlayClassName : {
374
+ base : "myOverlayClass" ,
375
+ afterOpen : "myOverlayClass_after-open" ,
376
+ beforeClose : "myOverlayClass_before-close"
377
+ }
378
+ } ;
379
+ const node = createHTMLElement ( "div" ) ;
380
+ const modal = ReactDOM . render ( < Modal { ...props } /> , node ) ;
381
+ requestAnimationFrame ( ( ) => {
382
+ moverlay ( modal ) . className . should . be . eql (
383
+ "myOverlayClass myOverlayClass_after-open"
384
+ ) ;
385
+ ReactDOM . unmountComponentAtNode ( node ) ;
386
+ } ) ;
377
387
} ) ;
378
388
} ) ;
379
389
@@ -668,11 +678,18 @@ export default () => {
668
678
} ) ;
669
679
670
680
it ( "adds --after-open for animations" , ( ) => {
671
- const props = { isOpen : true } ;
672
- withModal ( props , null , modal => {
681
+ withElementCollector ( ( ) => {
673
682
const rg = / - - a f t e r - o p e n / i;
674
- rg . test ( mcontent ( modal ) . className ) . should . be . ok ( ) ;
675
- rg . test ( moverlay ( modal ) . className ) . should . be . ok ( ) ;
683
+ const props = { isOpen : true } ;
684
+ const node = createHTMLElement ( "div" ) ;
685
+ const modal = ReactDOM . render ( < Modal { ...props } /> , node ) ;
686
+ requestAnimationFrame ( ( ) => {
687
+ const contentName = modal . portal . content . className ;
688
+ const overlayName = modal . portal . overlay . className ;
689
+ rg . test ( contentName ) . should . be . ok ( ) ;
690
+ rg . test ( overlayName ) . should . be . ok ( ) ;
691
+ ReactDOM . unmountComponentAtNode ( node ) ;
692
+ } ) ;
676
693
} ) ;
677
694
} ) ;
678
695
@@ -722,25 +739,24 @@ export default () => {
722
739
} ) ;
723
740
724
741
it ( "keeps the modal in the DOM until closeTimeoutMS elapses" , done => {
725
- const closeTimeoutMS = 100 ;
742
+ function checkDOM ( count ) {
743
+ const overlay = document . querySelectorAll ( ".ReactModal__Overlay" ) ;
744
+ const content = document . querySelectorAll ( ".ReactModal__Content" ) ;
745
+ overlay . length . should . be . eql ( count ) ;
746
+ content . length . should . be . eql ( count ) ;
747
+ }
748
+ withElementCollector ( ( ) => {
749
+ const closeTimeoutMS = 100 ;
750
+ const props = { isOpen : true , closeTimeoutMS } ;
751
+ const node = createHTMLElement ( "div" ) ;
752
+ const modal = ReactDOM . render ( < Modal { ...props } /> , node ) ;
726
753
727
- const props = { isOpen : true , closeTimeoutMS } ;
728
- withModal ( props , null , modal => {
729
754
modal . portal . closeWithTimeout ( ) ;
730
-
731
- function checkDOM ( count ) {
732
- const overlay = document . querySelectorAll ( ".ReactModal__Overlay" ) ;
733
- const content = document . querySelectorAll ( ".ReactModal__Content" ) ;
734
- overlay . length . should . be . eql ( count ) ;
735
- content . length . should . be . eql ( count ) ;
736
- }
737
-
738
- // content is still mounted after modal is gone
739
755
checkDOM ( 1 ) ;
740
756
741
757
setTimeout ( ( ) => {
742
- // content is unmounted after specified timeout
743
758
checkDOM ( 0 ) ;
759
+ ReactDOM . unmountComponentAtNode ( node ) ;
744
760
done ( ) ;
745
761
} , closeTimeoutMS ) ;
746
762
} ) ;
0 commit comments