1
1
/* eslint-disable no-undef */
2
2
import React , { useState } from 'react' ;
3
3
import { mount } from 'enzyme' ;
4
+ import { render , fireEvent } from '@testing-library/react' ;
4
5
import TreeSelect , { TreeNode } from '../src' ;
5
6
import KeyCode from 'rc-util/lib/KeyCode' ;
6
7
@@ -203,7 +204,7 @@ describe('TreeSelect.SearchInput', () => {
203
204
describe ( 'keyboard events' , ( ) => {
204
205
it ( 'should select first matched node when press enter' , ( ) => {
205
206
const onSelect = jest . fn ( ) ;
206
- const wrapper = mount (
207
+ const { getByRole } = render (
207
208
< TreeSelect
208
209
showSearch
209
210
open
@@ -217,26 +218,26 @@ describe('TreeSelect.SearchInput', () => {
217
218
) ;
218
219
219
220
// Search and press enter, should select first matched non-disabled node
220
- wrapper . search ( '1' ) ;
221
- wrapper . find ( 'input' ) . first ( ) . simulate ( 'keyDown' , { which : KeyCode . ENTER } ) ;
221
+ const input = getByRole ( 'combobox' ) ;
222
+ fireEvent . change ( input , { target : { value : '1' } } ) ;
223
+ fireEvent . keyDown ( input , { keyCode : KeyCode . ENTER } ) ;
222
224
expect ( onSelect ) . toHaveBeenCalledWith ( '1' , expect . anything ( ) ) ;
223
225
onSelect . mockReset ( ) ;
224
226
225
227
// Search disabled node and press enter, should not select
226
- wrapper . search ( '2' ) ;
227
- wrapper . find ( ' input' ) . first ( ) . simulate ( 'keyDown' , { which : KeyCode . ENTER } ) ;
228
+ fireEvent . change ( input , { target : { value : '2' } } ) ;
229
+ fireEvent . keyDown ( input , { keyCode : KeyCode . ENTER } ) ;
228
230
expect ( onSelect ) . not . toHaveBeenCalled ( ) ;
229
231
onSelect . mockReset ( ) ;
230
232
231
- wrapper . search ( '3' ) ;
232
- wrapper . find ( ' input' ) . first ( ) . simulate ( 'keyDown' , { which : KeyCode . ENTER } ) ;
233
+ fireEvent . change ( input , { target : { value : '3' } } ) ;
234
+ fireEvent . keyDown ( input , { keyCode : KeyCode . ENTER } ) ;
233
235
expect ( onSelect ) . toHaveBeenCalledWith ( '3' , expect . anything ( ) ) ;
234
- onSelect . mockReset ( ) ;
235
236
} ) ;
236
237
237
238
it ( 'should not select node when no matches found' , ( ) => {
238
239
const onSelect = jest . fn ( ) ;
239
- const wrapper = mount (
240
+ const { getByRole } = render (
240
241
< TreeSelect
241
242
showSearch
242
243
onSelect = { onSelect }
@@ -249,14 +250,15 @@ describe('TreeSelect.SearchInput', () => {
249
250
) ;
250
251
251
252
// Search non-existent value and press enter, should not select any node
252
- wrapper . search ( 'not-exist' ) ;
253
- wrapper . find ( 'input' ) . first ( ) . simulate ( 'keyDown' , { which : KeyCode . ENTER } ) ;
253
+ const input = getByRole ( 'combobox' ) ;
254
+ fireEvent . change ( input , { target : { value : 'not-exist' } } ) ;
255
+ fireEvent . keyDown ( input , { keyCode : KeyCode . ENTER } ) ;
254
256
expect ( onSelect ) . not . toHaveBeenCalled ( ) ;
255
257
} ) ;
256
258
257
259
it ( 'should ignore enter press when all matched nodes are disabled' , ( ) => {
258
260
const onSelect = jest . fn ( ) ;
259
- const wrapper = mount (
261
+ const { getByRole } = render (
260
262
< TreeSelect
261
263
showSearch
262
264
onSelect = { onSelect }
@@ -269,13 +271,14 @@ describe('TreeSelect.SearchInput', () => {
269
271
) ;
270
272
271
273
// When all matched nodes are disabled, press enter should not select any node
272
- wrapper . search ( '1' ) ;
273
- wrapper . find ( 'input' ) . first ( ) . simulate ( 'keyDown' , { which : KeyCode . ENTER } ) ;
274
+ const input = getByRole ( 'combobox' ) ;
275
+ fireEvent . change ( input , { target : { value : '1' } } ) ;
276
+ fireEvent . keyDown ( input , { keyCode : KeyCode . ENTER } ) ;
274
277
expect ( onSelect ) . not . toHaveBeenCalled ( ) ;
275
278
} ) ;
276
279
277
280
it ( 'should activate first matched node when searching' , ( ) => {
278
- const wrapper = mount (
281
+ const { getByRole , container } = render (
279
282
< TreeSelect
280
283
showSearch
281
284
open
@@ -288,12 +291,15 @@ describe('TreeSelect.SearchInput', () => {
288
291
) ;
289
292
290
293
// When searching, first matched non-disabled node should be activated
291
- wrapper . search ( '1' ) ;
292
- expect ( wrapper . find ( '.rc-tree-select-tree-treenode-active' ) . text ( ) ) . toBe ( '1' ) ;
294
+ const input = getByRole ( 'combobox' ) ;
295
+ fireEvent . change ( input , { target : { value : '1' } } ) ;
296
+ expect ( container . querySelector ( '.rc-tree-select-tree-treenode-active' ) ) . toHaveTextContent (
297
+ '1' ,
298
+ ) ;
293
299
294
300
// Should skip disabled nodes
295
- wrapper . search ( '2' ) ;
296
- expect ( wrapper . find ( '.rc-tree-select-tree-treenode-active' ) . length ) . toBe ( 0 ) ;
301
+ fireEvent . change ( input , { target : { value : '2' } } ) ;
302
+ expect ( container . querySelectorAll ( '.rc-tree-select-tree-treenode-active' ) ) . toHaveLength ( 0 ) ;
297
303
} ) ;
298
304
} ) ;
299
305
} ) ;
0 commit comments