@mapbox/mr-ui
Version:
UI components for Mapbox projects
122 lines (121 loc) • 4.89 kB
JavaScript
;
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();
});
});