|
1 | 1 | import type { DevToolsCommandEntry, DevToolsCommandKeybinding } from '@vitejs/devtools-kit' |
2 | 2 | import { describe, expect, it } from 'vitest' |
3 | | -import { collectAllKeybindings, formatKeybinding, KNOWN_BROWSER_SHORTCUTS, normalizeKeyEvent } from '../keybindings' |
| 3 | +import { areKeybindingsEqual, collectAllKeybindings, formatKeybinding, isKeybindingOverrideDifferentFromDefault, KNOWN_BROWSER_SHORTCUTS, normalizeKeyEvent } from '../keybindings' |
4 | 4 |
|
5 | 5 | describe('formatKeybinding', () => { |
6 | 6 | it('splits key string into parts', () => { |
@@ -105,6 +105,44 @@ describe('collectAllKeybindings', () => { |
105 | 105 | }) |
106 | 106 | }) |
107 | 107 |
|
| 108 | +describe('areKeybindingsEqual', () => { |
| 109 | + it('treats undefined and empty arrays as equal', () => { |
| 110 | + expect(areKeybindingsEqual(undefined, [])).toBe(true) |
| 111 | + expect(areKeybindingsEqual([], undefined)).toBe(true) |
| 112 | + }) |
| 113 | + |
| 114 | + it('compares keybinding arrays by length, order, and key', () => { |
| 115 | + const defaults = [{ key: 'Mod+K' }, { key: 'Alt+K' }] |
| 116 | + |
| 117 | + expect(areKeybindingsEqual(defaults, [{ key: 'Mod+K' }, { key: 'Alt+K' }])).toBe(true) |
| 118 | + expect(areKeybindingsEqual(defaults, [{ key: 'Mod+K' }])).toBe(false) |
| 119 | + expect(areKeybindingsEqual(defaults, [{ key: 'Alt+K' }, { key: 'Mod+K' }])).toBe(false) |
| 120 | + expect(areKeybindingsEqual(defaults, [{ key: 'Mod+K' }, { key: 'Alt+N' }])).toBe(false) |
| 121 | + }) |
| 122 | +}) |
| 123 | + |
| 124 | +describe('isKeybindingOverrideDifferentFromDefault', () => { |
| 125 | + it('treats a missing override as default state', () => { |
| 126 | + expect(isKeybindingOverrideDifferentFromDefault(undefined, [{ key: 'Mod+K' }])).toBe(false) |
| 127 | + }) |
| 128 | + |
| 129 | + it('treats undefined default and empty override as equivalent', () => { |
| 130 | + expect(isKeybindingOverrideDifferentFromDefault([], undefined)).toBe(false) |
| 131 | + }) |
| 132 | + |
| 133 | + it('treats empty override as different from non-empty default', () => { |
| 134 | + expect(isKeybindingOverrideDifferentFromDefault([], [{ key: 'Mod+K' }])).toBe(true) |
| 135 | + }) |
| 136 | + |
| 137 | + it('treats custom key as different from empty default', () => { |
| 138 | + expect(isKeybindingOverrideDifferentFromDefault([{ key: 'Alt+N' }], [])).toBe(true) |
| 139 | + }) |
| 140 | + |
| 141 | + it('treats matching override and defaults as default state', () => { |
| 142 | + expect(isKeybindingOverrideDifferentFromDefault([{ key: 'Mod+K' }], [{ key: 'Mod+K' }])).toBe(false) |
| 143 | + }) |
| 144 | +}) |
| 145 | + |
108 | 146 | describe('kNOWN_BROWSER_SHORTCUTS', () => { |
109 | 147 | it('has descriptions for all entries', () => { |
110 | 148 | for (const [key, description] of Object.entries(KNOWN_BROWSER_SHORTCUTS)) { |
|
0 commit comments