Skip to content

Commit 76f191d

Browse files
committed
Remove usage of Simulate and SimulateNative in favor of dispatching native events.
1 parent 577aa97 commit 76f191d

File tree

1 file changed

+151
-28
lines changed

1 file changed

+151
-28
lines changed

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

Lines changed: 151 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,71 +9,194 @@
99

1010
'use strict';
1111

12-
// TODO: can we express this test with only public API?
13-
var getEventKey = require('../getEventKey').default;
14-
1512
describe('getEventKey', () => {
13+
var React;
14+
var ReactDOM;
15+
16+
beforeEach(() => {
17+
React = require('react');
18+
ReactDOM = require('react-dom');
19+
});
20+
1621
describe('when key is implemented in a browser', () => {
1722
describe('when key is not normalized', () => {
1823
it('returns a normalized value', () => {
19-
var nativeEvent = new KeyboardEvent('keypress', {key: 'Del'});
24+
class Comp extends React.Component {
25+
cb = (e) => {
26+
this.key = e.key;
27+
}
28+
29+
render() {
30+
return <input ref={n => this.a = n} onKeyDown={this.cb} />;
31+
}
32+
}
33+
34+
var container = document.createElement('div');
35+
var instance = ReactDOM.render(<Comp />, container);
36+
37+
document.body.appendChild(container);
2038

21-
expect(getEventKey(nativeEvent)).toBe('Delete');
39+
var node = ReactDOM.findDOMNode(instance.a);
40+
41+
var nativeEvent = new KeyboardEvent('keydown', {key: 'Del', bubbles: true, cancelable: true});
42+
43+
node.dispatchEvent(nativeEvent);
44+
45+
expect(instance.key).toBe('Delete');
46+
47+
document.body.removeChild(container);
2248
});
2349
});
2450

2551
describe('when key is normalized', () => {
2652
it('returns a key', () => {
27-
var nativeEvent = new KeyboardEvent('keypress', {key: 'f'});
53+
class Comp extends React.Component {
54+
cb = (e) => {
55+
this.key = e.key;
56+
}
57+
58+
render() {
59+
return <input ref={n => this.a = n} onKeyDown={this.cb} />;
60+
}
61+
}
62+
63+
var container = document.createElement('div');
64+
var instance = ReactDOM.render(<Comp />, container);
65+
66+
document.body.appendChild(container);
2867

29-
expect(getEventKey(nativeEvent)).toBe('f');
68+
var node = ReactDOM.findDOMNode(instance.a);
69+
70+
var nativeEvent = new KeyboardEvent('keydown', {key: 'f', bubbles: true, cancelable: true});
71+
72+
node.dispatchEvent(nativeEvent);
73+
74+
expect(instance.key).toBe('f');
75+
76+
document.body.removeChild(container);
3077
});
3178
});
3279
});
3380

3481
describe('when key is not implemented in a browser', () => {
3582
describe('when event type is keypress', () => {
3683
describe('when charCode is 13', () => {
37-
it("returns 'Enter'", () => {
38-
var nativeEvent = new KeyboardEvent('keypress', {charCode: 13});
39-
40-
expect(getEventKey(nativeEvent)).toBe('Enter');
84+
it('returns "Enter"', () => {
85+
class Comp extends React.Component {
86+
cb = (e) => {
87+
this.key = e.key;
88+
}
89+
90+
render() {
91+
return <input ref={n => this.a = n} onKeyPress={this.cb} />;
92+
}
93+
}
94+
95+
var container = document.createElement('div');
96+
var instance = ReactDOM.render(<Comp />, container);
97+
98+
document.body.appendChild(container);
99+
100+
var node = ReactDOM.findDOMNode(instance.a);
101+
102+
var nativeEvent = new KeyboardEvent('keypress', {charCode: 13, bubbles: true, cancelable: true});
103+
104+
node.dispatchEvent(nativeEvent);
105+
106+
expect(instance.key).toBe('Enter');
107+
108+
document.body.removeChild(container);
41109
});
42110
});
43111

44112
describe('when charCode is not 13', () => {
45113
it('returns a string from a charCode', () => {
46-
var nativeEvent = new KeyboardEvent('keypress', {charCode: 65});
47-
48-
expect(getEventKey(nativeEvent)).toBe('A');
114+
class Comp extends React.Component {
115+
cb = (e) => {
116+
this.key = e.key;
117+
}
118+
119+
render() {
120+
return <input ref={n => this.a = n} onKeyPress={this.cb} />;
121+
}
122+
}
123+
124+
var container = document.createElement('div');
125+
var instance = ReactDOM.render(<Comp />, container);
126+
127+
document.body.appendChild(container);
128+
129+
var node = ReactDOM.findDOMNode(instance.a);
130+
131+
var nativeEvent = new KeyboardEvent('keypress', {charCode: 65, bubbles: true, cancelable: true});
132+
133+
node.dispatchEvent(nativeEvent);
134+
135+
expect(instance.key).toBe('A');
136+
137+
document.body.removeChild(container);
49138
});
50139
});
51140
});
52141

53142
describe('when event type is keydown or keyup', () => {
54143
describe('when keyCode is recognized', () => {
55144
it('returns a translated key', () => {
56-
var nativeEvent = new KeyboardEvent('keydown', {keyCode: 45});
57-
58-
expect(getEventKey(nativeEvent)).toBe('Insert');
145+
class Comp extends React.Component {
146+
cb = (e) => {
147+
this.key = e.key;
148+
}
149+
150+
render() {
151+
return <input ref={n => this.a = n} onKeyDown={this.cb} />;
152+
}
153+
}
154+
155+
var container = document.createElement('div');
156+
var instance = ReactDOM.render(<Comp />, container);
157+
158+
document.body.appendChild(container);
159+
160+
var node = ReactDOM.findDOMNode(instance.a);
161+
162+
var nativeEvent = new KeyboardEvent('keydown', {keyCode: 45, bubbles: true, cancelable: true});
163+
164+
node.dispatchEvent(nativeEvent);
165+
166+
expect(instance.key).toBe('Insert');
167+
168+
document.body.removeChild(container);
59169
});
60170
});
61171

62172
describe('when keyCode is not recognized', () => {
63173
it('returns Unidentified', () => {
64-
var nativeEvent = new KeyboardEvent('keydown', {keyCode: 1337});
65-
66-
expect(getEventKey(nativeEvent)).toBe('Unidentified');
174+
class Comp extends React.Component {
175+
cb = (e) => {
176+
this.key = e.key;
177+
}
178+
179+
render() {
180+
return <input ref={n => this.a = n} onKeyDown={this.cb} />;
181+
}
182+
}
183+
184+
var container = document.createElement('div');
185+
var instance = ReactDOM.render(<Comp />, container);
186+
187+
document.body.appendChild(container);
188+
189+
var node = ReactDOM.findDOMNode(instance.a);
190+
191+
var nativeEvent = new KeyboardEvent('keydown', {keyCode: 1337, bubbles: true, cancelable: true});
192+
193+
node.dispatchEvent(nativeEvent);
194+
195+
expect(instance.key).toBe('Unidentified');
196+
197+
document.body.removeChild(container);
67198
});
68199
});
69200
});
70-
71-
describe('when event type is unknown', () => {
72-
it('returns an empty string', () => {
73-
var nativeEvent = new KeyboardEvent('keysmack');
74-
75-
expect(getEventKey(nativeEvent)).toBe('');
76-
});
77-
});
78201
});
79202
});

0 commit comments

Comments
 (0)