Skip to content

Commit 295bc49

Browse files
committed
Update getEventKey tests to use public API (#11299)
1 parent 177cd85 commit 295bc49

File tree

1 file changed

+127
-25
lines changed

1 file changed

+127
-25
lines changed

packages/react-dom/src/events/__tests__/getEventKey-test.js

Lines changed: 127 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,70 +9,172 @@
99

1010
'use strict';
1111

12-
// TODO: can we express this test with only public API?
13-
var getEventKey = require('../getEventKey');
14-
1512
describe('getEventKey', () => {
13+
var React;
14+
var ReactTestUtils;
15+
16+
beforeEach(() => {
17+
jest.resetModules();
18+
React = require('react');
19+
ReactTestUtils = require('react-dom/test-utils');
20+
});
21+
1622
describe('when key is implemented in a browser', () => {
1723
describe('when key is not normalized', () => {
1824
it('returns a normalized value', () => {
19-
var nativeEvent = new KeyboardEvent('keypress', {key: 'Del'});
20-
21-
expect(getEventKey(nativeEvent)).toBe('Delete');
25+
function cb(e) {
26+
expect(e.key).toBe('Delete');
27+
}
28+
29+
function Comp() {
30+
return {
31+
render() {
32+
return <input ref="inputRef" onKeyPressCapture={cb} />;
33+
},
34+
};
35+
}
36+
37+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
38+
var node = instance.refs.inputRef;
39+
ReactTestUtils.SimulateNative.keyPress(node, {key: 'Del'});
2240
});
2341
});
2442

2543
describe('when key is normalized', () => {
2644
it('returns a key', () => {
27-
var nativeEvent = new KeyboardEvent('keypress', {key: 'f'});
28-
29-
expect(getEventKey(nativeEvent)).toBe('f');
45+
function cb(e) {
46+
expect(e.key).toBe('f');
47+
}
48+
49+
function Comp() {
50+
return {
51+
render() {
52+
return <input ref="inputRef" onKeyPressCapture={cb} />;
53+
},
54+
};
55+
}
56+
57+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
58+
var node = instance.refs.inputRef;
59+
ReactTestUtils.Simulate.keyPress(node, {key: 'f'});
3060
});
3161
});
3262
});
3363

3464
describe('when key is not implemented in a browser', () => {
3565
describe('when event type is keypress', () => {
3666
describe('when charCode is 13', () => {
37-
it("returns 'Enter'", () => {
38-
var nativeEvent = new KeyboardEvent('keypress', {charCode: 13});
39-
40-
expect(getEventKey(nativeEvent)).toBe('Enter');
67+
it('returns "Enter"', () => {
68+
function cb(e) {
69+
expect(e.key).toBe('Enter');
70+
}
71+
72+
function Comp() {
73+
return {
74+
render() {
75+
return <input ref="inputRef" onKeyPressCapture={cb} />;
76+
},
77+
};
78+
}
79+
80+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
81+
var node = instance.refs.inputRef;
82+
ReactTestUtils.SimulateNative.keyPress(node, {
83+
type: 'keypress',
84+
charCode: 13,
85+
});
4186
});
4287
});
4388

4489
describe('when charCode is not 13', () => {
4590
it('returns a string from a charCode', () => {
46-
var nativeEvent = new KeyboardEvent('keypress', {charCode: 65});
47-
48-
expect(getEventKey(nativeEvent)).toBe('A');
91+
function cb(e) {
92+
expect(e.key).toBe('A');
93+
}
94+
95+
function Comp() {
96+
return {
97+
render() {
98+
return <input ref="inputRef" onKeyPressCapture={cb} />;
99+
},
100+
};
101+
}
102+
103+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
104+
var node = instance.refs.inputRef;
105+
ReactTestUtils.SimulateNative.keyPress(node, {
106+
type: 'keypress',
107+
charCode: 65,
108+
});
49109
});
50110
});
51111
});
52112

53113
describe('when event type is keydown or keyup', () => {
54114
describe('when keyCode is recognized', () => {
55115
it('returns a translated key', () => {
56-
var nativeEvent = new KeyboardEvent('keydown', {keyCode: 45});
57-
58-
expect(getEventKey(nativeEvent)).toBe('Insert');
116+
function cb(e) {
117+
expect(e.key).toBe('Insert');
118+
}
119+
120+
function Comp() {
121+
return {
122+
render() {
123+
return <input ref="inputRef" onKeyDownCapture={cb} />;
124+
},
125+
};
126+
}
127+
128+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
129+
var node = instance.refs.inputRef;
130+
ReactTestUtils.SimulateNative.keyDown(node, {
131+
type: 'keydown',
132+
keyCode: 45,
133+
});
59134
});
60135
});
61136

62137
describe('when keyCode is not recognized', () => {
63138
it('returns Unidentified', () => {
64-
var nativeEvent = new KeyboardEvent('keydown', {keyCode: 1337});
65-
66-
expect(getEventKey(nativeEvent)).toBe('Unidentified');
139+
function cb(e) {
140+
expect(e.key).toBe('Unidentified');
141+
}
142+
143+
function Comp() {
144+
return {
145+
render() {
146+
return <input ref="inputRef" onKeyDownCapture={cb} />;
147+
},
148+
};
149+
}
150+
151+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
152+
var node = instance.refs.inputRef;
153+
ReactTestUtils.SimulateNative.keyDown(node, {
154+
type: 'keydown',
155+
keyCode: 1337,
156+
});
67157
});
68158
});
69159
});
70160

71161
describe('when event type is unknown', () => {
72162
it('returns an empty string', () => {
73-
var nativeEvent = new KeyboardEvent('keysmack');
74-
75-
expect(getEventKey(nativeEvent)).toBe('');
163+
function cb(e) {
164+
expect(e.key).toBe('');
165+
}
166+
167+
function Comp() {
168+
return {
169+
render() {
170+
return <input ref="inputRef" onKeyDownCapture={cb} />;
171+
},
172+
};
173+
}
174+
175+
var instance = ReactTestUtils.renderIntoDocument(<Comp />);
176+
var node = instance.refs.inputRef;
177+
ReactTestUtils.SimulateNative.keyDown(node, {type: 'keysmack'});
76178
});
77179
});
78180
});

0 commit comments

Comments
 (0)