Skip to content

Commit d07a208

Browse files
committed
add test case
1 parent 12a1346 commit d07a208

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

tests/KeyCode.test.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import KeyCode from '../src/KeyCode';
2+
3+
describe('KeyCode.isEditableTarget', () => {
4+
function testIsEditableTarget(
5+
listenTarget: EventTarget,
6+
dispatchTarget: EventTarget,
7+
init?: KeyboardEventInit,
8+
) {
9+
let result: boolean | undefined;
10+
11+
const handler = (e: KeyboardEvent) => {
12+
result = KeyCode.isEditableTarget(e);
13+
};
14+
15+
listenTarget.addEventListener('keydown', handler);
16+
dispatchTarget.dispatchEvent(new KeyboardEvent('keydown', init));
17+
listenTarget.removeEventListener('keydown', handler);
18+
19+
return result;
20+
}
21+
22+
it('check non-editable target', () => {
23+
const result = testIsEditableTarget(window, window);
24+
25+
expect(result).toBe(false);
26+
});
27+
28+
it('IME composing', () => {
29+
const input = document.createElement('input');
30+
const result = testIsEditableTarget(input, input, { isComposing: true });
31+
32+
expect(result).toBe(true);
33+
});
34+
35+
it('check input target', () => {
36+
const input = document.createElement('input');
37+
document.body.appendChild(input);
38+
39+
const result = testIsEditableTarget(window, input, { bubbles: true });
40+
41+
document.body.removeChild(input);
42+
43+
expect(result).toBe(true);
44+
});
45+
46+
it('check contentEditable target', () => {
47+
const editable = document.createElement('div');
48+
// mock isContentEditable cause JSDOM don't support it
49+
Object.defineProperty(editable, 'isContentEditable', { value: true });
50+
const result = testIsEditableTarget(editable, editable);
51+
52+
expect(result).toBe(true);
53+
});
54+
});

0 commit comments

Comments
 (0)