summaryrefslogtreecommitdiff
path: root/apps/web/src/stores
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/stores')
-rw-r--r--apps/web/src/stores/__tests__/keybindings-store.test.ts65
-rw-r--r--apps/web/src/stores/keybindings-store.ts2
2 files changed, 66 insertions, 1 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
diff --git a/apps/web/src/stores/keybindings-store.ts b/apps/web/src/stores/keybindings-store.ts
index 4c11cfde..740a5855 100644
--- a/apps/web/src/stores/keybindings-store.ts
+++ b/apps/web/src/stores/keybindings-store.ts
@@ -17,7 +17,7 @@ export const defaultKeybindings: KeybindingConfig = {
"shift+left": "jump-backward",
"shift+right": "jump-forward",
home: "goto-start",
- enter: "goto-start",
+ enter: "goto-start", // More intuitive alternative to Home key for timeline navigation
end: "goto-end",
s: "split-element",
n: "toggle-snapping",