2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-05-20 03:09:36 +03:00
Files
vue-select/tests/unit/Keydown.spec.js
T
Jeff Sagal 06177a4d24 feat: Vue 3 Support (#1344)
BREAKING CHANGE: drop vue 2 support
2021-10-19 18:53:22 -07:00

80 lines
2.4 KiB
JavaScript

import { DOMWrapper } from '@vue/test-utils'
import typeAheadPointer from '../../src/mixins/typeAheadPointer'
import { mountDefault } from '../helpers'
describe('Custom Keydown Handlers', () => {
let spy
afterEach(() => {
if (spy) spy.mockClear()
})
it('can use the map-keydown prop to trigger custom behaviour', async () => {
const onKeyDown = jest.fn()
const Select = mountDefault({
mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }),
})
await Select.get('input').trigger('keydown.space')
expect(onKeyDown.mock.calls.length).toBe(1)
})
it('selectOnKeyCodes should trigger a selection for custom keycodes', () => {
spy = jest.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
const Select = mountDefault({
selectOnKeyCodes: [32],
})
Select.get('input').trigger('keydown.space')
expect(spy).toHaveBeenCalledTimes(1)
})
it('even works when combining selectOnKeyCodes with map-keydown', () => {
spy = jest.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
const onKeyDown = jest.fn()
const Select = mountDefault({
mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }),
selectOnKeyCodes: [9],
})
Select.get('input').trigger('keydown.space')
expect(onKeyDown.mock.calls.length).toBe(1)
Select.get('input').trigger('keydown.tab')
expect(spy).toHaveBeenCalledTimes(1)
})
describe('CompositionEvent support', () => {
it('will not select a value with enter if the user is composing', () => {
spy = jest.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
const Select = mountDefault()
Select.get('input').trigger('compositionstart')
Select.get('input').trigger('keydown.enter')
expect(spy).toHaveBeenCalledTimes(0)
Select.get('input').trigger('compositionend')
Select.get('input').trigger('keydown.enter')
expect(spy).toHaveBeenCalledTimes(1)
})
it('will not select a value with tab if the user is composing', () => {
spy = jest.spyOn(typeAheadPointer.methods, 'typeAheadSelect')
const Select = mountDefault({ selectOnTab: true })
Select.get('input').trigger('compositionstart')
Select.get('input').trigger('keydown.tab')
expect(spy).toHaveBeenCalledTimes(0)
Select.get('input').trigger('compositionend')
Select.get('input').trigger('keydown.tab')
expect(spy).toHaveBeenCalledTimes(1)
})
})
})