@@ -22,7 +22,9 @@ describe('Select.Accessibility', () => {
22
22
} ) ;
23
23
24
24
// 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
+
26
28
const { container } = render (
27
29
< Select
28
30
showSearch
@@ -40,26 +42,54 @@ describe('Select.Accessibility', () => {
40
42
value : 'light' ,
41
43
} ,
42
44
] }
45
+ onActive = { onActive }
43
46
/> ,
44
47
) ;
45
48
46
49
// First Match
47
50
fireEvent . change ( container . querySelector ( 'input' ) ! , { target : { value : 'b' } } ) ;
48
- jest . runAllTimers ( ) ;
51
+ await act ( async ( ) => {
52
+ jest . runAllTimers ( ) ;
53
+ await Promise . resolve ( ) ;
54
+ } ) ;
49
55
50
56
expectOpen ( container ) ;
51
57
expect (
52
58
document . querySelector ( '.rc-select-item-option-active .rc-select-item-option-content' )
53
59
. textContent ,
54
60
) . toEqual ( 'Bamboo' ) ;
61
+ expect ( onActive ) . toHaveBeenCalledWith ( 'bamboo' ) ;
62
+ expect ( onActive ) . toHaveBeenCalledTimes ( 1 ) ;
55
63
56
64
keyDown ( container . querySelector ( 'input' ) ! , KeyCode . ENTER ) ;
57
65
expectOpen ( container , false ) ;
58
66
59
67
// Next Match
60
68
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
+
61
82
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
+ } ) ;
63
93
64
94
expectOpen ( container ) ;
65
95
expect (
0 commit comments