UNPKG

@mapbox/mr-ui

Version:

UI components for Mapbox projects

122 lines (121 loc) 4.89 kB
"use strict"; var isMacModule = _interopRequireWildcard(require("./is-mac")); var _keybindingFormatters = require("./keybinding-formatters"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } jest.mock('./is-mac', () => ({ isMac: jest.fn(() => true) })); describe('transformCode', () => { it('works on single items (mac)', () => { isMacModule.isMac.mockReturnValue(true); expect((0, _keybindingFormatters.transformCode)('mod+p')).toEqual('command+p'); }); it('works on single items (non-mac)', () => { isMacModule.isMac.mockReturnValue(false); expect((0, _keybindingFormatters.transformCode)('mod+p')).toEqual('ctrl+p'); }); it('works on arrays (mac)', () => { isMacModule.isMac.mockReturnValue(true); expect((0, _keybindingFormatters.transformCode)(['mod+p', 'mod+z'])).toEqual(['command+p', 'command+z']); }); it('works on arrays (non-mac)', () => { isMacModule.isMac.mockReturnValue(false); expect((0, _keybindingFormatters.transformCode)(['mod+p', 'mod+z'])).toEqual(['ctrl+p', 'ctrl+z']); }); }); describe('Format keyCodes', () => { test('parseCode', () => { const p = _keybindingFormatters.parseCode; const out = { altKey: false, ctrlKey: false, keyCode: -1, metaKey: false, shiftKey: false }; expect(p('a')).toEqual({ ...out, keyCode: 65 }); expect(p('?')).toEqual({ ...out, keyCode: 191, shiftKey: true }); expect(p('escape')).toEqual({ ...out, keyCode: 27 }); expect(p('1')).toEqual({ ...out, keyCode: 49 }); expect(p('!')).toEqual({ ...out, keyCode: 49, shiftKey: true }); expect(p('command+alt+up')).toEqual({ ...out, keyCode: 38, altKey: true, metaKey: true }); expect(p('ctrl+alt+up')).toEqual({ ...out, keyCode: 38, altKey: true, metaKey: false, ctrlKey: true }); expect(p('shift+left')).toEqual({ ...out, keyCode: 37, shiftKey: true }); expect(p('⇧1')).toEqual({ ...out, keyCode: 49, shiftKey: true }); expect(p('⌘V')).toEqual({ ...out, keyCode: 86, metaKey: true }); }); test('formatCode', () => { const p = x => (0, _keybindingFormatters.formatCode)((0, _keybindingFormatters.parseCode)(x)); expect(p('a')).toEqual(['a']); expect(p('?')).toEqual(['?']); expect(p('escape')).toEqual(['⎋']); expect(p('1')).toEqual(['1']); expect(p('!')).toEqual(['!']); expect(p('command+alt+up')).toEqual(['⌘', '⌥', '↑']); expect(p('ctrl+alt+up')).toEqual(['⌥', '⌃', '↑']); expect(p('shift+left')).toEqual(['⇧', '←']); expect(p('⇧1')).toEqual(['!']); expect(p('⌘V')).toEqual(['⌘', 'v']); }); test('formatCodeForDisplay (Mac)', () => { isMacModule.isMac.mockReturnValue(true); expect((0, _keybindingFormatters.formatCodeForDisplay)('a')).toEqual(['a']); expect((0, _keybindingFormatters.formatCodeForDisplay)('escape')).toEqual(['⎋']); expect((0, _keybindingFormatters.formatCodeForDisplay)('backspace')).toEqual(['Del']); expect((0, _keybindingFormatters.formatCodeForDisplay)('command+alt+up')).toEqual(['⌘', '⌥', '↑']); expect((0, _keybindingFormatters.formatCodeForDisplay)('shift+left')).toEqual(['⇧', '←']); expect((0, _keybindingFormatters.formatCodeForDisplay)('Alt+Shift+ArrowDown')).toEqual(['⇧', '⌥', '↓']); }); test('formatCodeForDisplay (non-Mac)', () => { isMacModule.isMac.mockReturnValue(false); expect((0, _keybindingFormatters.formatCodeForDisplay)('a')).toEqual(['a']); expect((0, _keybindingFormatters.formatCodeForDisplay)('escape')).toEqual(['⎋']); expect((0, _keybindingFormatters.formatCodeForDisplay)('backspace')).toEqual(['Del']); expect((0, _keybindingFormatters.formatCodeForDisplay)('command+alt+up')).toEqual(['Ctrl ', 'Alt ', '↑']); expect((0, _keybindingFormatters.formatCodeForDisplay)('shift+left')).toEqual(['Shift ', '←']); }); afterEach(() => { jest.restoreAllMocks(); }); });