diff --git a/src/__tests__/events-compat.js b/src/__tests__/events-compat.js new file mode 100644 index 0000000..9687a4e --- /dev/null +++ b/src/__tests__/events-compat.js @@ -0,0 +1,25 @@ +import { h } from 'preact' // required by render +import { fireEvent, render } from '..' +import 'preact/compat' + +test('calling `fireEvent` with `preact/compat` and onChange works too', () => { + const handler = jest.fn() + + // Preact only matches React's aliasing of `onChange` when `preact/compat` is used + // This test ensures this is supported properly with `fireEvent.change()` + const { + container: { firstChild: input } + } = render() + + const targetProperties = { value: 'a' } + const otherProperties = { isComposing: true } + const init = { + target: targetProperties, + ...otherProperties + } + + expect(fireEvent.change(input, init)).toBe(true) + + expect(handler).toHaveBeenCalledTimes(1) + expect(handler).toHaveBeenCalledWith(expect.objectContaining(otherProperties)) +}) diff --git a/src/__tests__/events.js b/src/__tests__/events.js index 3cea179..f2ece94 100644 --- a/src/__tests__/events.js +++ b/src/__tests__/events.js @@ -30,7 +30,7 @@ const eventTypes = [ }, { type: 'Focus', - events: ['input', 'invalid'], + events: ['input', 'invalid', 'change'], elementType: 'input' }, { @@ -200,8 +200,14 @@ test('calling `fireEvent` directly works too', () => { }) test('`fireEvent` returns false when prevented', () => { - const { container: { firstChild: button } } = render( - (