2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-05-17 02:29:37 +03:00

fix(1735): use keypress event for space (#1736)

This commit is contained in:
Jeff Sagal
2022-12-17 13:39:49 -08:00
committed by GitHub
parent 6de1375690
commit 795feabcf7
3 changed files with 57 additions and 25 deletions
+37 -1
View File
@@ -1,5 +1,7 @@
import { selectWithProps } from '../helpers'
import { mountDefault, selectWithProps } from '../helpers'
import OpenIndicator from '../../src/components/OpenIndicator'
import { shallowMount } from '@vue/test-utils'
import VueSelect from '../../src/components/Select.vue'
const preventDefault = jest.fn()
@@ -49,6 +51,40 @@ describe('Toggling Dropdown', () => {
expect(Select.vm.open).toEqual(true)
})
it('will open the dropdown when: the input has focus, space is pressed, menu is closed', async () => {
const Select = mountDefault()
const input = Select.findComponent({ ref: 'search' })
input.trigger('focus')
Select.vm.open = false
input.trigger('keypress.space')
expect(Select.vm.open).toEqual(true)
expect(Select.vm.search).toEqual('')
})
it('should open dropdown on alphabetic input', async () => {
const Select = mountDefault()
const input = Select.findComponent({ ref: 'search' })
input.element.value = 'a'
input.trigger('input')
await Select.vm.$nextTick()
expect(Select.vm.open).toEqual(true)
})
it('should open dropdown on numeric input', async () => {
const Select = shallowMount(VueSelect)
const input = Select.findComponent({ ref: 'search' })
input.element.value = 1
input.trigger('input')
await Select.vm.$nextTick()
expect(Select.vm.open).toEqual(true)
})
it('can close the dropdown when the el is clicked', () => {
const Select = selectWithProps()
const spy = jest.spyOn(Select.vm.$refs.search, 'blur')
+8 -22
View File
@@ -21,6 +21,14 @@ describe('Filtering Options', () => {
expect(Select.vm.filteredOptions).toEqual(['bar', 'baz'])
})
it('can filter items with spaces', () => {
const Select = shallowMount(VueSelect, {
propsData: { options: ['foo bar', 'baz'] },
})
Select.vm.search = ' '
expect(Select.vm.filteredOptions).toEqual(['foo bar'])
})
it('should not filter the array of strings if filterable is false', () => {
const Select = shallowMount(VueSelect, {
propsData: { options: ['foo', 'bar', 'baz'], filterable: false },
@@ -83,26 +91,4 @@ describe('Filtering Options', () => {
Select.vm.search = '1'
expect(Select.vm.filteredOptions).toEqual([1, 10])
})
it('should open dropdown on alphabetic input', async () => {
const Select = shallowMount(VueSelect)
const input = Select.find('.vs__search')
input.element.value = 'a'
input.trigger('input')
await Select.vm.$nextTick()
expect(Select.vm.open).toEqual(true)
})
it('should open dropdown on numeric input', async () => {
const Select = shallowMount(VueSelect)
const input = Select.find('.vs__search')
input.element.value = 1
input.trigger('input')
await Select.vm.$nextTick()
expect(Select.vm.open).toEqual(true)
})
})