summaryrefslogtreecommitdiff
path: root/apps/web/src/stores/__tests__
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/stores/__tests__')
-rw-r--r--apps/web/src/stores/__tests__/keybindings-store.test.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/apps/web/src/stores/__tests__/keybindings-store.test.ts b/apps/web/src/stores/__tests__/keybindings-store.test.ts
new file mode 100644
index 00000000..8aa5b94f
--- /dev/null
+++ b/apps/web/src/stores/__tests__/keybindings-store.test.ts
@@ -0,0 +1,65 @@
+import { describe, it, expect, beforeEach } from 'vitest'
+import { useKeybindingsStore } from '../keybindings-store'
+
+describe('Keybindings Store', () => {
+ beforeEach(() => {
+ // Reset store to default state before each test
+ useKeybindingsStore.getState().resetToDefaults()
+ })
+
+ describe('Default Keybindings', () => {
+ it('should include Enter key mapping to goto-start action', () => {
+ const { keybindings } = useKeybindingsStore.getState()
+ expect(keybindings.enter).toBe('goto-start')
+ })
+
+ it('should include Home key mapping to goto-start action', () => {
+ const { keybindings } = useKeybindingsStore.getState()
+ expect(keybindings.home).toBe('goto-start')
+ })
+
+ it('should have both Enter and Home keys for the same action', () => {
+ const { keybindings } = useKeybindingsStore.getState()
+ expect(keybindings.enter).toBe(keybindings.home)
+ })
+ })
+
+ describe('getKeybindingsForAction', () => {
+ it('should return both Enter and Home keys for goto-start action', () => {
+ const { getKeybindingsForAction } = useKeybindingsStore.getState()
+ const keys = getKeybindingsForAction('goto-start')
+
+ expect(keys).toContain('enter')
+ expect(keys).toContain('home')
+ expect(keys.length).toBeGreaterThanOrEqual(2)
+ })
+ })
+
+ describe('Keyboard Event Parsing', () => {
+ it('should generate correct keybinding string for Enter key', () => {
+ const { getKeybindingString } = useKeybindingsStore.getState()
+
+ // Mock KeyboardEvent for Enter key
+ const enterEvent = new KeyboardEvent('keydown', {
+ key: 'Enter',
+ code: 'Enter'
+ })
+
+ const result = getKeybindingString(enterEvent)
+ expect(result).toBe('enter')
+ })
+
+ it('should generate correct keybinding string for Home key', () => {
+ const { getKeybindingString } = useKeybindingsStore.getState()
+
+ // Mock KeyboardEvent for Home key
+ const homeEvent = new KeyboardEvent('keydown', {
+ key: 'Home',
+ code: 'Home'
+ })
+
+ const result = getKeybindingString(homeEvent)
+ expect(result).toBe('home')
+ })
+ })
+}) \ No newline at end of file