1
+ import { h } from 'vue'
1
2
import { render , fireEvent } from '@testing-library/vue'
2
3
import Button from './components/Button'
3
4
@@ -120,6 +121,8 @@ const eventTypes = [
120
121
} ,
121
122
]
122
123
124
+ const capitalize = str => str . charAt ( 0 ) . toUpperCase ( ) + str . slice ( 1 )
125
+
123
126
// For each event type, we assert that the right events are being triggered
124
127
// when the associated fireEvent method is called.
125
128
eventTypes . forEach ( ( { type, events, elementType = 'input' , init} ) => {
@@ -128,21 +131,20 @@ eventTypes.forEach(({type, events, elementType = 'input', init}) => {
128
131
it ( `triggers ${ eventName } ` , async ( ) => {
129
132
const testId = `${ type } -${ eventName } `
130
133
const spy = jest . fn ( )
134
+ const eventNameHandler = `on${ capitalize ( eventName ) } `
131
135
132
- // Render an element with a listener of the event under testing and a
133
- // test-id attribute, so that we can get the DOM node afterwards.
134
- const { getByTestId} = render ( {
135
- render ( h ) {
136
+ const componentWithEvent = {
137
+ render ( ) {
136
138
return h ( elementType , {
137
- on : {
138
- [ eventName . toLowerCase ( ) ] : spy ,
139
- } ,
140
- attrs : {
141
- 'data-testid' : testId ,
142
- } ,
139
+ [ eventNameHandler ] : spy ,
140
+ 'data-testid' : testId ,
143
141
} )
144
142
} ,
145
- } )
143
+ }
144
+
145
+ // Render an element with a listener of the event under testing and a
146
+ // test-id attribute, so that we can get the DOM node afterwards.
147
+ const { getByTestId} = render ( componentWithEvent )
146
148
147
149
const elem = getByTestId ( testId )
148
150
@@ -157,13 +159,13 @@ eventTypes.forEach(({type, events, elementType = 'input', init}) => {
157
159
test ( 'triggers dblclick on doubleClick' , async ( ) => {
158
160
const spy = jest . fn ( )
159
161
160
- const { getByRole} = render ( {
161
- render ( h ) {
162
- return h ( 'button' , {
163
- on : { dblclick : spy } ,
164
- } )
162
+ const componentWithDblClick = {
163
+ render ( ) {
164
+ return h ( 'button' , { onDblClick : spy } , 'Click me' )
165
165
} ,
166
- } )
166
+ }
167
+
168
+ const { getByRole} = render ( componentWithDblClick )
167
169
168
170
const elem = getByRole ( 'button' )
169
171
0 commit comments