[react-events] Fix keyboard responder test (#16368)
Nicolas Gallagher committed
Aug 12, 2019 at 13:51 UTC
9449f8bf391512e258c822e80752f2b6c8db26a0
1 file changed
+18
-40
packages/react-events/src/dom/__tests__/Keyboard-test.internal.js
+18
-40
@@ -14,29 +14,22 @@ let ReactFeatureFlags;
14
let ReactDOM;
15
let useKeyboardResponder;
16
17
-const createEvent = (type, data) => {
18
- const event = document.createEvent('CustomEvent');
19
- event.initCustomEvent(type, true, true);
20
- if (data != null) {
21
- Object.entries(data).forEach(([key, value]) => {
22
- event[key] = value;
23
- });
24
- }
25
- return event;
26
-};
17
+import {keydown, keyup} from '../test-utils';
18
+
19
+function initializeModules(hasPointerEvents) {
20
+ jest.resetModules();
21
+ ReactFeatureFlags = require('shared/ReactFeatureFlags');
22
+ ReactFeatureFlags.enableFlareAPI = true;
23
+ React = require('react');
24
+ ReactDOM = require('react-dom');
25
+ useKeyboardResponder = require('react-events/keyboard').useKeyboardResponder;
26
+}
27
28
describe('Keyboard event responder', () => {
29
let container;
30
31
beforeEach(() => {
32
- jest.resetModules();
33
- ReactFeatureFlags = require('shared/ReactFeatureFlags');
34
- ReactFeatureFlags.enableFlareAPI = true;
35
- React = require('react');
36
- ReactDOM = require('react-dom');
37
- useKeyboardResponder = require('react-events/keyboard')
38
- .useKeyboardResponder;
39
-
32
+ initializeModules();
33
container = document.createElement('div');
34
document.body.appendChild(container);
35
});
@@ -66,7 +59,9 @@ describe('Keyboard event responder', () => {
59
});
60
61
it('prevents custom events being dispatched', () => {
69
- ref.current.dispatchEvent(createEvent('scroll'));
62
+ const target = ref.current;
63
+ target.dispatchEvent(keydown());
64
+ target.dispatchEvent(keyup());
65
expect(onKeyDown).not.toBeCalled();
66
expect(onKeyUp).not.toBeCalled();
67
});
@@ -88,13 +83,7 @@ describe('Keyboard event responder', () => {
83
});
84
85
it('is called after "keydown" event', () => {
91
- ref.current.dispatchEvent(
92
- new KeyboardEvent('keydown', {
93
- bubbles: true,
94
- cancelable: true,
95
- key: 'Q',
96
- }),
97
- );
86
+ ref.current.dispatchEvent(keydown({key: 'Q'}));
87
expect(onKeyDown).toHaveBeenCalledTimes(1);
88
expect(onKeyDown).toHaveBeenCalledWith(
89
expect.objectContaining({key: 'Q', type: 'keydown'}),
@@ -120,20 +109,9 @@ describe('Keyboard event responder', () => {
109
});
110
111
it('is called after "keydown" event', () => {
123
- ref.current.dispatchEvent(
124
- new KeyboardEvent('keydown', {
125
- bubbles: true,
126
- cancelable: true,
127
- key: 'Q',
128
- }),
129
- );
130
- ref.current.dispatchEvent(
131
- new KeyboardEvent('keyup', {
132
- bubbles: true,
133
- cancelable: true,
134
- key: 'Q',
135
- }),
136
- );
112
+ const target = ref.current;
113
+ target.dispatchEvent(keydown({key: 'Q'}));
114
+ target.dispatchEvent(keyup({key: 'Q'}));
115
expect(onKeyDown).toHaveBeenCalledTimes(1);
116
expect(onKeyDown).toHaveBeenCalledWith(
117
expect.objectContaining({key: 'Q', type: 'keydown'}),