@@ -22,7 +22,9 @@ describe('Select.Accessibility', () => {
2222 } ) ;
2323
2424 // https://github.com/ant-design/ant-design/issues/31850
25- it ( 'active index should keep' , ( ) => {
25+ it ( 'active index should keep' , async ( ) => {
26+ const onActive = jest . fn ( ) ;
27+
2628 const { container } = render (
2729 < Select
2830 showSearch
@@ -40,26 +42,54 @@ describe('Select.Accessibility', () => {
4042 value : 'light' ,
4143 } ,
4244 ] }
45+ onActive = { onActive }
4346 /> ,
4447 ) ;
4548
4649 // First Match
4750 fireEvent . change ( container . querySelector ( 'input' ) ! , { target : { value : 'b' } } ) ;
48- jest . runAllTimers ( ) ;
51+ await act ( async ( ) => {
52+ jest . runAllTimers ( ) ;
53+ await Promise . resolve ( ) ;
54+ } ) ;
4955
5056 expectOpen ( container ) ;
5157 expect (
5258 document . querySelector ( '.rc-select-item-option-active .rc-select-item-option-content' )
5359 . textContent ,
5460 ) . toEqual ( 'Bamboo' ) ;
61+ expect ( onActive ) . toHaveBeenCalledWith ( 'bamboo' ) ;
62+ expect ( onActive ) . toHaveBeenCalledTimes ( 1 ) ;
5563
5664 keyDown ( container . querySelector ( 'input' ) ! , KeyCode . ENTER ) ;
5765 expectOpen ( container , false ) ;
5866
5967 // Next Match
6068 fireEvent . change ( container . querySelector ( 'input' ) ! , { target : { value : '' } } ) ;
69+ await act ( async ( ) => {
70+ await Promise . resolve ( ) ;
71+ } ) ;
72+ expect ( onActive ) . toHaveBeenCalledWith ( 'bamboo' ) ;
73+ expect ( onActive ) . toHaveBeenCalledTimes ( 2 ) ;
74+
75+ fireEvent . change ( container . querySelector ( 'input' ) ! , { target : { value : 'not exist' } } ) ;
76+ await act ( async ( ) => {
77+ await Promise . resolve ( ) ;
78+ } ) ;
79+ expect ( onActive ) . toHaveBeenCalledWith ( null ) ;
80+ expect ( onActive ) . toHaveBeenCalledTimes ( 3 ) ;
81+
6182 fireEvent . change ( container . querySelector ( 'input' ) ! , { target : { value : 'g' } } ) ;
62- jest . runAllTimers ( ) ;
83+ await act ( async ( ) => {
84+ await Promise . resolve ( ) ;
85+ } ) ;
86+ expect ( onActive ) . toHaveBeenCalledWith ( 'light' ) ;
87+ expect ( onActive ) . toHaveBeenCalledTimes ( 4 ) ;
88+
89+ await act ( async ( ) => {
90+ jest . runAllTimers ( ) ;
91+ await Promise . resolve ( ) ;
92+ } ) ;
6393
6494 expectOpen ( container ) ;
6595 expect (
0 commit comments