import { defaultHotkeys, Hotkeys, HotkeyScope, resetScope, } from '@/functions/HotkeyScope'; import hotkeys from 'hotkeys-js'; import { flushPromises } from '@vue/test-utils'; vi.mock('hotkeys-js', async (importOriginal) => ({ ...(await importOriginal()), default: vi.fn().mockReturnValue({ setScope: vi.fn(), deleteScope: vi.fn(), }), })); describe('HotkeyScope tests', () => { it('should map defaultHotkeys', async () => { const altD = vi.fn(); const hotkeysMocked = vi.mocked(hotkeys); hotkeysMocked.mockImplementationOnce((params: any, params2: any) => { params2({ preventDefault: vi.fn() }, { key: params }); }); defaultHotkeys({ [Hotkeys.ALT_D]: altD, }); await flushPromises(); expect(altD).toHaveBeenCalled(); }); it('should resetScope', async () => { const setScope = vi.fn(); const deleteScope = vi.fn(); Object.defineProperty(hotkeys, 'setScope', { value: setScope, writable: true, // possibility to override }); Object.defineProperty(hotkeys, 'deleteScope', { value: deleteScope, writable: true, // possibility to override }); await flushPromises(); resetScope(HotkeyScope.MCAD_MENU); await flushPromises(); expect(setScope).toHaveBeenCalled(); expect(deleteScope).toHaveBeenCalled(); }); });