11/* eslint-disable max-classes-per-file */
22
3- import {
4- act ,
5- cleanup ,
6- fireEvent ,
7- render ,
8- } from '@testing-library/react' ;
3+ import { act , cleanup , fireEvent , render } from '@testing-library/react' ;
94import { spyElementPrototypes } from 'rc-util/lib/test/domHook' ;
105import React , { createRef , StrictMode } from 'react' ;
116import ReactDOM from 'react-dom' ;
127import Trigger from '../src' ;
13- import { placementAlignMap , awaitFakeTimer } from './util' ;
8+ import { awaitFakeTimer , placementAlignMap } from './util' ;
149
1510describe ( 'Trigger.Basic' , ( ) => {
1611 beforeEach ( ( ) => {
@@ -866,14 +861,23 @@ describe('Trigger.Basic', () => {
866861 < div
867862 id = "btn"
868863 onClick = { ( ) => {
869- setPlacementAlign ( prev => prev === placementAlignMap . left ? placementAlignMap . leftTop : placementAlignMap . left ) ;
864+ setPlacementAlign ( ( prev ) =>
865+ prev === placementAlignMap . left
866+ ? placementAlignMap . leftTop
867+ : placementAlignMap . left ,
868+ ) ;
870869 } }
871870 >
872871 click
873872 </ div >
874- < div id = "close" onClick = { ( ) => {
875- setOpen ( false ) ;
876- } } > close</ div >
873+ < div
874+ id = "close"
875+ onClick = { ( ) => {
876+ setOpen ( false ) ;
877+ } }
878+ >
879+ close
880+ </ div >
877881 </ div >
878882 </ Trigger >
879883 </ >
@@ -891,4 +895,32 @@ describe('Trigger.Basic', () => {
891895 await awaitFakeTimer ( ) ;
892896 expect ( onPopupAlign ) . toHaveBeenCalledTimes ( 2 ) ;
893897 } ) ;
898+
899+ it . only ( 'popupVisible switch `undefined` and `false` should work' , async ( ) => {
900+ const Demo = ( props ) => (
901+ < Trigger
902+ action = { [ 'click' ] }
903+ popupAlign = { placementAlignMap . topRight }
904+ popup = { < strong > trigger</ strong > }
905+ { ...props }
906+ >
907+ < div className = "target" > click</ div >
908+ </ Trigger >
909+ ) ;
910+
911+ const { container, rerender } = render ( < Demo /> ) ;
912+
913+ trigger ( container , '.target' ) ;
914+ expect ( document . querySelector ( '.rc-trigger-popup' ) ) . toBeTruthy ( ) ;
915+
916+ // Back to false
917+ rerender ( < Demo popupVisible = { false } /> ) ;
918+ await awaitFakeTimer ( ) ;
919+ expect ( document . querySelector ( '.rc-trigger-popup-hidden' ) ) . toBeTruthy ( ) ;
920+
921+ // Back to undefined
922+ rerender ( < Demo popupVisible = { undefined } /> ) ;
923+ await awaitFakeTimer ( ) ;
924+ expect ( document . querySelector ( '.rc-trigger-popup-hidden' ) ) . toBeTruthy ( ) ;
925+ } ) ;
894926} ) ;
0 commit comments