Skip to content

Commit d547700

Browse files
fix(tests and events): resolves unsupported events and passing tests (#57)
* fix(tests and events): resolves unsupported events and passing tests * Update src/pure.js Co-authored-by: Jovi De Croock <[email protected]> * Update src/file-event.js Co-authored-by: Jovi De Croock <[email protected]> * fix(tests and events): rename file * Update src/fire-event.js typo Co-authored-by: Jovi De Croock <[email protected]> Co-authored-by: Jovi De Croock <[email protected]>
1 parent 0f19120 commit d547700

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

src/__tests__/events.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,18 @@ const eventTypes = [
125125
type: 'Transition',
126126
events: ['transitionEnd'],
127127
elementType: 'div'
128+
},
129+
{
130+
type: 'Pointer',
131+
events: ['pointerEnter', 'pointerLeave'],
132+
elementType: 'div'
128133
}
129134
]
130135

131-
eventTypes.forEach(({
132-
type, events, elementType, init
133-
}) => {
136+
eventTypes.forEach(({ type, events, elementType, init }) => {
134137
describe(`${type} Events`, () => {
135138
events.forEach((eventName) => {
136-
const eventProp = `on${eventName.toLowerCase()}`
139+
const eventProp = `on${eventName[0].toUpperCase() + eventName.slice(1)}`
137140

138141
it(`triggers ${eventProp}`, () => {
139142
const ref = createRef()
@@ -157,9 +160,9 @@ eventTypes.forEach(({
157160
test('onInput works', () => {
158161
const handler = jest.fn()
159162

160-
const { container: { firstChild: input } } = render(
161-
(<input type="text" onInput={handler} />)
162-
)
163+
const {
164+
container: { firstChild: input }
165+
} = render(<input type="text" onInput={handler} />)
163166

164167
expect(fireEvent.input(input, { target: { value: 'a' } })).toBe(true)
165168

@@ -169,9 +172,9 @@ test('onInput works', () => {
169172
test('calling `fireEvent` directly works too', () => {
170173
const handler = jest.fn()
171174

172-
const { container: { firstChild: button } } = render(
173-
(<button onClick={handler} />)
174-
)
175+
const {
176+
container: { firstChild: button }
177+
} = render(<button onClick={handler} />)
175178

176179
expect(fireEvent(
177180
button,

src/fire-event.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { fireEvent as domFireEvent, createEvent } from '@testing-library/dom'
2+
3+
// Similar to RTL we make are own fireEvent helper that just calls DTL's fireEvent with that
4+
// we can that any specific behaviors to the helpers we need
5+
export const fireEvent = (...args) => domFireEvent(...args)
6+
7+
Object.keys(domFireEvent).forEach((key) => {
8+
fireEvent[key] = (elem) => {
9+
// Preact registers event-listeners in lower-case, so onPointerStart becomes pointerStart
10+
// here we will copy this behavior, when we fire an element we will fire it in lowercase so
11+
// we hit the Preact listeners.
12+
const eventName = `on${key.toLowerCase()}`
13+
const isInElem = eventName in elem
14+
return isInElem
15+
? domFireEvent[key](elem)
16+
: domFireEvent(elem, createEvent(key[0].toUpperCase() + key.slice(1), elem))
17+
}
18+
})

src/pure.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { getQueriesForElement, prettyDOM, configure as configureDTL } from '@testing-library/dom'
22
import { h, hydrate as preactHydrate, render as preactRender } from 'preact'
3-
import { act, setupRerender } from 'preact/test-utils'
3+
import { act } from 'preact/test-utils'
4+
import { fireEvent } from './fire-event'
45

56
configureDTL({
67
asyncWrapper: async cb => {
@@ -106,5 +107,7 @@ function cleanup () {
106107
mountedContainers.forEach(cleanupAtContainer)
107108
}
108109

110+
// eslint-disable-next-line import/export
109111
export * from '@testing-library/dom'
110-
export { render, cleanup, act }
112+
// eslint-disable-next-line import/export
113+
export { render, cleanup, act, fireEvent }

0 commit comments

Comments
 (0)