mirror of
https://github.com/tenrok/vue-select.git
synced 2026-05-17 02:29:37 +03:00
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
import { selectWithProps } from '../helpers'
|
|
|
|
describe('Selectable prop', () => {
|
|
it('should select selectable option if clicked', async () => {
|
|
const Select = selectWithProps({
|
|
options: ['one', 'two', 'three'],
|
|
selectable: (option) => option === 'one',
|
|
})
|
|
|
|
Select.vm.$data.open = true
|
|
await Select.vm.$nextTick()
|
|
|
|
Select.find('.vs__dropdown-menu li:first-child').trigger('mousedown')
|
|
|
|
await Select.vm.$nextTick()
|
|
expect(Select.vm.selectedValue).toEqual(['one'])
|
|
})
|
|
|
|
it('should not select not selectable option if clicked', async () => {
|
|
const Select = selectWithProps({
|
|
options: ['one', 'two', 'three'],
|
|
selectable: (option) => option === 'one',
|
|
})
|
|
|
|
Select.vm.$data.open = true
|
|
await Select.vm.$nextTick()
|
|
|
|
Select.find('.vs__dropdown-menu li:last-child').trigger('mousedown')
|
|
await Select.vm.$nextTick()
|
|
|
|
expect(Select.vm.selectedValue).toEqual([])
|
|
})
|
|
|
|
it('should skip non-selectable option on down arrow keyDown', () => {
|
|
const Select = selectWithProps({
|
|
options: ['one', 'two', 'three'],
|
|
selectable: (option) => option !== 'two',
|
|
})
|
|
|
|
Select.vm.typeAheadPointer = 1
|
|
|
|
Select.find({ ref: 'search' }).trigger('keydown.down')
|
|
|
|
expect(Select.vm.typeAheadPointer).toEqual(2)
|
|
})
|
|
|
|
it('should skip non-selectable option on up arrow keyDown', () => {
|
|
const Select = selectWithProps({
|
|
options: ['one', 'two', 'three'],
|
|
selectable: (option) => option !== 'two',
|
|
})
|
|
|
|
Select.vm.typeAheadPointer = 2
|
|
|
|
Select.find({ ref: 'search' }).trigger('keydown.up')
|
|
|
|
expect(Select.vm.typeAheadPointer).toEqual(0)
|
|
})
|
|
})
|