57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { renderHook } from '@testing-library/react';
|
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
import { useGlobalKeyboardShortcuts } from './useGlobalKeyboardShortcuts';
|
|
|
|
describe('useGlobalKeyboardShortcuts', () => {
|
|
const mockOnHelpOpen = vi.fn();
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
afterEach(() => {
|
|
// Cleanup event listeners
|
|
document.removeEventListener('keydown', vi.fn());
|
|
});
|
|
|
|
it('should setup global keyboard shortcuts', () => {
|
|
renderHook(() =>
|
|
useGlobalKeyboardShortcuts({
|
|
onHelpOpen: mockOnHelpOpen,
|
|
})
|
|
);
|
|
|
|
// Le hook devrait être défini et fonctionnel
|
|
expect(mockOnHelpOpen).toBeDefined();
|
|
});
|
|
|
|
it('should handle keyboard events', () => {
|
|
renderHook(() =>
|
|
useGlobalKeyboardShortcuts({
|
|
onHelpOpen: mockOnHelpOpen,
|
|
})
|
|
);
|
|
|
|
// Simuler une touche de raccourci
|
|
const event = new KeyboardEvent('keydown', {
|
|
key: '?',
|
|
ctrlKey: false,
|
|
shiftKey: false,
|
|
altKey: false,
|
|
metaKey: false,
|
|
});
|
|
|
|
document.dispatchEvent(event);
|
|
|
|
// Le hook devrait réagir aux événements clavier
|
|
expect(mockOnHelpOpen).toBeDefined();
|
|
});
|
|
|
|
it('should handle empty options', () => {
|
|
renderHook(() => useGlobalKeyboardShortcuts({}));
|
|
|
|
// Le hook devrait fonctionner même sans options
|
|
expect(true).toBe(true);
|
|
});
|
|
});
|
|
|