test(app): cover menu shortcut conversion

This commit is contained in:
Danila Poyarkov 2026-05-17 15:02:42 +03:00
parent 38d30e25e0
commit 75d1726640
3 changed files with 35 additions and 1 deletions

View file

@ -175,7 +175,8 @@
},
{
"id": "dev-tools",
"label": "Developer Tools"
"label": "Developer Tools",
"accelerator": "CmdOrCtrl+Alt+I"
}
]
},

View file

@ -132,6 +132,7 @@ export const APP_MENU_SCHEMA = [
{
id: 'dev-tools',
label: 'Developer Tools',
accelerator: 'CmdOrCtrl+Alt+I',
target: 'native'
}
]

View file

@ -0,0 +1,32 @@
import { describe, expect, test } from 'bun:test'
import {
appMenuAccelerator,
appMenuShortcut,
shortcutTokenToAccelerator,
shortcutTokenToTinykeys
} from '@/app/shell/menu/shortcut'
describe('app menu shortcut conversion', () => {
test('looks up canonical shortcut tokens from the menu schema', () => {
expect(appMenuShortcut('save-as')).toBe('MOD+SHIFT+S')
expect(appMenuShortcut('selection.createComponent')).toBe('MOD+ALT+K')
})
test('converts shortcut tokens to tinykeys bindings', () => {
expect(shortcutTokenToTinykeys('MOD+SHIFT+S')).toBe('$mod+Shift+S')
expect(shortcutTokenToTinykeys('ALT+Delete')).toBe('Alt+Delete')
expect(shortcutTokenToTinykeys('⌫')).toBe('Backspace')
})
test('converts shortcut tokens to native accelerators', () => {
expect(shortcutTokenToAccelerator('MOD+SHIFT+S')).toBe('CmdOrCtrl+Shift+S')
expect(shortcutTokenToAccelerator('ALT+A')).toBe('Alt+A')
expect(shortcutTokenToAccelerator('⌫')).toBe('Backspace')
})
test('derives native accelerators from menu ids', () => {
expect(appMenuAccelerator('save-as')).toBe('CmdOrCtrl+Shift+S')
expect(appMenuAccelerator('selection.delete')).toBe('Backspace')
})
})