1+ /* eslint-disable jsx-a11y/click-events-have-key-events */
12/* 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'
57
68describe ( '<Button>' , ( ) => {
79 it ( `should fire click event once for buttons on click` , ( ) => {
810 const cb = jest . fn ( )
9- const { getByTestId } = render (
11+ render (
1012 < Button >
11- < button onClick = { cb } data-testid = "btn" />
13+ < button onClick = { cb } />
1214 </ Button >
1315 )
1416 // mousedown
15- fireEvent . click ( getByTestId ( 'btn ') )
17+ fireEvent . click ( screen . getByRole ( 'button ') )
1618 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 ') )
1921 expect ( cb ) . toBeCalledTimes ( 1 )
2022 // touchstart
21- fireEvent . click ( getByTestId ( 'btn ') )
23+ fireEvent . click ( screen . getByRole ( 'button ') )
2224 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 ') )
2527 expect ( cb ) . toBeCalledTimes ( 2 )
2628 } )
2729
2830 it ( `should fire click event once for buttons on space` , ( ) => {
2931 const cb = jest . fn ( )
30- const { getByTestId } = render (
32+ render (
3133 < Button >
32- < button onClick = { cb } data-testid = "btn" />
34+ < button onClick = { cb } />
3335 </ Button >
3436 )
3537
36- fireEvent . keyDown ( getByTestId ( 'btn ') , { which : 32 } )
38+ fireEvent . keyDown ( screen . getByRole ( 'button ') , { key : ' ' } )
3739 expect ( cb ) . toBeCalledTimes ( 1 )
3840 } )
3941
4042 it ( `should fire click event once for buttons on enter` , ( ) => {
4143 const cb = jest . fn ( )
42- const { getByTestId } = render (
44+ render (
4345 < Button >
44- < button onClick = { cb } data-testid = "btn" />
46+ < button onClick = { cb } />
4547 </ Button >
4648 )
4749
48- fireEvent . keyDown ( getByTestId ( 'btn ') , { which : 13 } )
50+ fireEvent . keyDown ( screen . getByRole ( 'button ') , { key : 'Enter' } )
4951 expect ( cb ) . toBeCalledTimes ( 1 )
5052 } )
5153
5254 it ( `should fire click event once for divs on click` , ( ) => {
5355 const cb = jest . fn ( )
54- const { getByTestId } = render (
56+ render (
5557 < Button >
56- < div onClick = { cb } data-testid = "btn" />
58+ < div onClick = { cb } />
5759 </ Button >
5860 )
5961
60- fireEvent . click ( getByTestId ( 'btn ') )
62+ fireEvent . click ( screen . getByRole ( 'button ') )
6163 expect ( cb ) . toBeCalledTimes ( 0 )
62- fireEvent . mouseDown ( getByTestId ( 'btn' ) )
63- fireEvent . click ( getByTestId ( 'btn' ) )
64+ userEvent . click ( screen . getByRole ( 'button' ) )
6465 expect ( cb ) . toBeCalledTimes ( 1 )
6566 } )
6667
6768 it ( `should fire click event once for divs on space` , ( ) => {
6869 const cb = jest . fn ( )
69- const { getByTestId } = render (
70+ render (
7071 < Button >
71- < div onClick = { cb } data-testid = "btn" />
72+ < div onClick = { cb } />
7273 </ Button >
7374 )
7475
75- fireEvent . keyDown ( getByTestId ( 'btn ') , { which : 32 } )
76+ fireEvent . keyDown ( screen . getByRole ( 'button ') , { key : ' ' } )
7677 expect ( cb ) . toBeCalledTimes ( 1 )
7778 } )
7879
7980 it ( `should fire click event once for divs on enter` , ( ) => {
8081 const cb = jest . fn ( )
81- const { getByTestId } = render (
82+ render (
8283 < Button >
83- < div onClick = { cb } data-testid = "btn" />
84+ < div onClick = { cb } />
8485 </ Button >
8586 )
8687
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' } )
10089 expect ( cb ) . toBeCalledTimes ( 1 )
10190 } )
10291
@@ -114,7 +103,7 @@ describe('<Button>', () => {
114103 expect (
115104 render (
116105 < Button >
117- < div role = " menu" tabIndex = { - 1 } />
106+ < div role = ' menu' tabIndex = { - 1 } />
118107 </ Button >
119108 ) . asFragment ( )
120109 ) . toMatchSnapshot ( 'role=menu, tabIndex=-1' )
0 commit comments