Skip to content

Commit

Permalink
input shortcut tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nbonamy committed May 12, 2024
1 parent ff47af2 commit ba688b8
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 5 deletions.
7 changes: 3 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"@vitejs/plugin-vue": "^5.0.4",
"@vitest/coverage-v8": "^1.5.0",
"@vitest/ui": "^1.5.0",
"@vue/test-utils": "^2.4.5",
"@vue/test-utils": "github:nbonamy/test-utils#keyboardevent-code",
"dotenv": "^16.4.5",
"electron": "29.1.6",
"electron-devtools-installer": "^3.2.0",
Expand Down
66 changes: 66 additions & 0 deletions tests/components/input_shortcut.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@

import { vi, expect, test, beforeEach } from 'vitest'
import { mount, VueWrapper } from '@vue/test-utils'
import InputShortcut from '../../src/components/InputShortcut.vue'

let wrapper: VueWrapper<any>

window.api = {
platform: 'darwin',
shortcuts: {
register: vi.fn(),
unregister: vi.fn(),
}
}

beforeEach(() => {
wrapper = mount(InputShortcut, {
props: {
onChange: vi.fn(),
}
})
})

test('Create', async () => {
expect(wrapper.exists()).toBe(true)
expect(wrapper.find('input').exists()).toBe(true)
})

test('Focus', async () => {
await wrapper.find('input').trigger('focus')
expect(window.api.shortcuts.unregister).toHaveBeenCalled()
})

test('Blur', async () => {
await wrapper.find('input').trigger('blur')
expect(window.api.shortcuts.register).toHaveBeenCalled()
})

test('Input value', async () => {
expect(wrapper.find('input').element.value).toBe('')
await wrapper.find('input').trigger('keydown', { code: 'Space', key: ' ', keyCode: 32, ctrlKey: true })
expect(wrapper.find('input').element.value).toBe('⌃Space')
})

test('Delete value with backspace', async () => {
await wrapper.find('input').trigger('keydown', { code: 'Space', key: ' ', keyCode: 32, ctrlKey: true })
expect(wrapper.find('input').element.value).not.toBe('')
await wrapper.find('input').trigger('keydown', { code: 'Backspace', key: 'Backspace', keyCode: 8 })
expect(wrapper.find('input').element.value).toBe('')
})

test('Delete value with icon', async () => {
await wrapper.find('input').trigger('keydown', { code: 'Space', key: ' ', keyCode: 32, ctrlKey: true })
expect(wrapper.find('input').element.value).not.toBe('')
await wrapper.find('.icon').trigger('click')
expect(wrapper.find('input').element.value).toBe('')
})

test('Invalid shortcuts', async () => {
await wrapper.find('input').trigger('keydown', { code: 'Space', key: ' ', keyCode: 32 })
expect(wrapper.find('input').element.value).toBe('')
await wrapper.find('input').trigger('keydown', { code: 'Space', key: ' ', keyCode: 14, ctrlKey: true })
expect(wrapper.find('input').element.value).toBe('')
await wrapper.find('input').trigger('keydown', { code: 'Shift', key: ' ', keyCode: 32, ctrlKey: true })
expect(wrapper.find('input').element.value).toBe('')
})

0 comments on commit ba688b8

Please sign in to comment.