@platform/react
Version:
React refs and helpers.
89 lines (88 loc) • 3.92 kB
JavaScript
import { expect } from 'chai';
import { Keyboard } from '.';
describe('keyboard', () => {
describe('(static) parse', () => {
it('string', () => {
const test = (pattern, expectedKeys, expectedModifiers = []) => {
const res = Keyboard.parse(pattern);
expect(res.keys).to.eql(expectedKeys);
expect(res.modifiers).to.eql(expectedModifiers);
};
test('', []);
test('r', ['R']);
test(' r ', ['R']);
test('+r', ['R']);
test('+r+', ['R']);
test(' + r + ', ['R']);
test('r+R+r', ['R']);
test('cmd+l', ['L'], ['META']);
test('MetA+l', ['L'], ['META']);
test('ComMand+l', ['L'], ['META']);
test('cmd+l+alt', ['L'], ['META', 'ALT']);
test('cmd+ALT+Shift+l+aLt+P+ctrl+SHIFT', ['L', 'P'], ['META', 'ALT', 'SHIFT', 'CTRL']);
test('CMD+ALT+J', ['J'], ['META', 'ALT']);
test('ArrowUp', ['ArrowUp']);
test('CMD+ArrowUp', ['ArrowUp'], ['META']);
});
it('boolean', () => {
const test = (pattern) => {
const res = Keyboard.parse(pattern);
expect(res).to.eql({ keys: [], modifiers: [] });
};
test(true);
test(false);
});
it('undefined', () => {
const test = (pattern) => {
const res = Keyboard.parse(pattern);
expect(res).to.eql({ keys: [], modifiers: [] });
};
test();
test(undefined);
});
it('default value', () => {
const test = (pattern, defaultValue, expectedKeys, expectedModifiers = []) => {
const res = Keyboard.parse(pattern, defaultValue);
expect(res.keys).to.eql(expectedKeys);
expect(res.modifiers).to.eql(expectedModifiers);
};
test(undefined, 'CMD+Z', ['Z'], ['META']);
test('', 'CMD+Z', ['Z'], ['META']);
test(' ', 'CMD+Z', ['Z'], ['META']);
test(true, 'CMD+Z', ['Z'], ['META']);
test(false, 'CMD+Z', [], []);
});
});
describe('(static) includes', () => {
const test = (pattern, event, expected) => {
const res = Keyboard.matchEvent(pattern, event);
expect(res).to.eql(expected);
};
it('from pattern object', () => {
test(Keyboard.parse('r'), { key: 'r' }, true);
test(Keyboard.parse('CMD+r'), { key: 'r', metaKey: true }, true);
test(Keyboard.parse('CMD+r'), { key: 'R' }, false);
});
it('from pattern string', () => {
test('r', { key: 'r' }, true);
test('CMD+r', { key: 'r', metaKey: true }, true);
test('CMD+r', { key: 'R', metaKey: true }, true);
test('cmd+r', { key: 'R', metaKey: true }, true);
test('CMD+ALT+SHIFT+CTRL+R', { key: 'r', metaKey: true, ctrlKey: true, altKey: true, shiftKey: true }, true);
test('CMD+r', { key: 'R' }, false);
test('ALT+r', { key: 'R' }, false);
test('SHIFT+r', { key: 'R' }, false);
test('CTRL+r', { key: 'R' }, false);
test('CMD+SHIFT+L', { key: 'L', metaKey: true, shiftKey: true }, true);
test('CMD+SHIFT+L', { key: 'L', metaKey: true }, false);
test('CMD+L', { key: 'L', metaKey: true, shiftKey: true }, false);
test('CMD+K', { key: 'k', metaKey: true }, true);
test('s', { key: 's' }, true);
test('s', { key: 'S' }, true);
test('S', { key: 's' }, true);
test('ArrowUp', { key: 'ArrowUp' }, true);
test('CMD+ArrowUp', { key: 'ArrowUp' }, false);
test('CMD+ArrowUp', { key: 'ArrowUp', metaKey: true }, true);
});
});
});