summaryrefslogtreecommitdiff
path: root/apps/web/src/stores/__tests__/keybindings-store.test.ts
blob: 8aa5b94f672c86c2512e0999a96ddf9e29f06275 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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')
    })
  })
})