1
+ /* eslint-disable jsx-a11y/click-events-have-key-events */
1
2
/* jest */
2
- import React from 'react'
3
- import { render , fireEvent } from '@testing-library/react'
4
- import Button from './index'
3
+ import * as React from 'react'
4
+ import { render , fireEvent , screen } from '@testing-library/react'
5
+ import userEvent from '@testing-library/user-event'
6
+ import { Button } from './index'
5
7
6
8
describe ( '<Button>' , ( ) => {
7
9
it ( `should fire click event once for buttons on click` , ( ) => {
8
10
const cb = jest . fn ( )
9
- const { getByTestId } = render (
11
+ render (
10
12
< Button >
11
- < button onClick = { cb } data-testid = "btn" />
13
+ < button onClick = { cb } />
12
14
</ Button >
13
15
)
14
16
// mousedown
15
- fireEvent . click ( getByTestId ( 'btn ') )
17
+ fireEvent . click ( screen . getByRole ( 'button ') )
16
18
expect ( cb ) . toBeCalledTimes ( 0 )
17
- fireEvent . mouseDown ( getByTestId ( 'btn ') )
18
- fireEvent . click ( getByTestId ( 'btn ') )
19
+ fireEvent . mouseDown ( screen . getByRole ( 'button ') )
20
+ fireEvent . click ( screen . getByRole ( 'button ') )
19
21
expect ( cb ) . toBeCalledTimes ( 1 )
20
22
// touchstart
21
- fireEvent . click ( getByTestId ( 'btn ') )
23
+ fireEvent . click ( screen . getByRole ( 'button ') )
22
24
expect ( cb ) . toBeCalledTimes ( 1 ) // should reset between clicks
23
- fireEvent . touchStart ( getByTestId ( 'btn ') )
24
- fireEvent . click ( getByTestId ( 'btn ') )
25
+ fireEvent . touchStart ( screen . getByRole ( 'button ') )
26
+ fireEvent . click ( screen . getByRole ( 'button ') )
25
27
expect ( cb ) . toBeCalledTimes ( 2 )
26
28
} )
27
29
28
30
it ( `should fire click event once for buttons on space` , ( ) => {
29
31
const cb = jest . fn ( )
30
- const { getByTestId } = render (
32
+ render (
31
33
< Button >
32
- < button onClick = { cb } data-testid = "btn" />
34
+ < button onClick = { cb } />
33
35
</ Button >
34
36
)
35
37
36
- fireEvent . keyDown ( getByTestId ( 'btn ') , { which : 32 } )
38
+ fireEvent . keyDown ( screen . getByRole ( 'button ') , { key : ' ' } )
37
39
expect ( cb ) . toBeCalledTimes ( 1 )
38
40
} )
39
41
40
42
it ( `should fire click event once for buttons on enter` , ( ) => {
41
43
const cb = jest . fn ( )
42
- const { getByTestId } = render (
44
+ render (
43
45
< Button >
44
- < button onClick = { cb } data-testid = "btn" />
46
+ < button onClick = { cb } />
45
47
</ Button >
46
48
)
47
49
48
- fireEvent . keyDown ( getByTestId ( 'btn ') , { which : 13 } )
50
+ fireEvent . keyDown ( screen . getByRole ( 'button ') , { key : 'Enter' } )
49
51
expect ( cb ) . toBeCalledTimes ( 1 )
50
52
} )
51
53
52
54
it ( `should fire click event once for divs on click` , ( ) => {
53
55
const cb = jest . fn ( )
54
- const { getByTestId } = render (
56
+ render (
55
57
< Button >
56
- < div onClick = { cb } data-testid = "btn" />
58
+ < div onClick = { cb } />
57
59
</ Button >
58
60
)
59
61
60
- fireEvent . click ( getByTestId ( 'btn ') )
62
+ fireEvent . click ( screen . getByRole ( 'button ') )
61
63
expect ( cb ) . toBeCalledTimes ( 0 )
62
- fireEvent . mouseDown ( getByTestId ( 'btn' ) )
63
- fireEvent . click ( getByTestId ( 'btn' ) )
64
+ userEvent . click ( screen . getByRole ( 'button' ) )
64
65
expect ( cb ) . toBeCalledTimes ( 1 )
65
66
} )
66
67
67
68
it ( `should fire click event once for divs on space` , ( ) => {
68
69
const cb = jest . fn ( )
69
- const { getByTestId } = render (
70
+ render (
70
71
< Button >
71
- < div onClick = { cb } data-testid = "btn" />
72
+ < div onClick = { cb } />
72
73
</ Button >
73
74
)
74
75
75
- fireEvent . keyDown ( getByTestId ( 'btn ') , { which : 32 } )
76
+ fireEvent . keyDown ( screen . getByRole ( 'button ') , { key : ' ' } )
76
77
expect ( cb ) . toBeCalledTimes ( 1 )
77
78
} )
78
79
79
80
it ( `should fire click event once for divs on enter` , ( ) => {
80
81
const cb = jest . fn ( )
81
- const { getByTestId } = render (
82
+ render (
82
83
< Button >
83
- < div onClick = { cb } data-testid = "btn" />
84
+ < div onClick = { cb } />
84
85
</ Button >
85
86
)
86
87
87
- fireEvent . keyDown ( getByTestId ( 'btn' ) , { which : 13 } )
88
- expect ( cb ) . toBeCalledTimes ( 1 )
89
- } )
90
-
91
- it ( `should fire user-defined onMouseDown` , ( ) => {
92
- const cb = jest . fn ( )
93
- const { getByTestId} = render (
94
- < Button >
95
- < div onMouseDown = { cb } data-testid = "btn" />
96
- </ Button >
97
- )
98
-
99
- fireEvent . mouseDown ( getByTestId ( 'btn' ) )
88
+ fireEvent . keyDown ( screen . getByRole ( 'button' ) , { key : 'Enter' } )
100
89
expect ( cb ) . toBeCalledTimes ( 1 )
101
90
} )
102
91
@@ -114,7 +103,7 @@ describe('<Button>', () => {
114
103
expect (
115
104
render (
116
105
< Button >
117
- < div role = " menu" tabIndex = { - 1 } />
106
+ < div role = ' menu' tabIndex = { - 1 } />
118
107
</ Button >
119
108
) . asFragment ( )
120
109
) . toMatchSnapshot ( 'role=menu, tabIndex=-1' )
0 commit comments