2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-05-20 03:09:36 +03:00
Files
2020-12-23 20:21:02 -08:00

71 lines
2.3 KiB
JavaScript

import { mountDefault } from "../helpers";
describe("Custom Keydown Handlers", () => {
it("can use the map-keydown prop to trigger custom behaviour", () => {
const onKeyDown = jest.fn();
const Select = mountDefault({
mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown })
});
Select.find({ ref: "search" }).trigger("keydown.space");
expect(onKeyDown.mock.calls.length).toBe(1);
});
it("selectOnKeyCodes should trigger a selection for custom keycodes", () => {
const Select = mountDefault({
selectOnKeyCodes: [32]
});
const spy = jest.spyOn(Select.vm, "typeAheadSelect");
Select.find({ ref: "search" }).trigger("keydown.space");
expect(spy).toHaveBeenCalledTimes(1);
});
it("even works when combining selectOnKeyCodes with map-keydown", () => {
const onKeyDown = jest.fn();
const Select = mountDefault({
mapKeydown: (defaults, vm) => ({ ...defaults, 32: onKeyDown }),
selectOnKeyCodes: [9]
});
const spy = jest.spyOn(Select.vm, "typeAheadSelect");
Select.find({ ref: "search" }).trigger("keydown.space");
expect(onKeyDown.mock.calls.length).toBe(1);
Select.find({ ref: "search" }).trigger("keydown.tab");
expect(spy).toHaveBeenCalledTimes(1);
});
describe("CompositionEvent support", () => {
it("will not select a value with enter if the user is composing", () => {
const Select = mountDefault();
const spy = jest.spyOn(Select.vm, "typeAheadSelect");
Select.find({ ref: "search" }).trigger("compositionstart");
Select.find({ ref: "search" }).trigger("keydown.enter");
expect(spy).toHaveBeenCalledTimes(0);
Select.find({ ref: "search" }).trigger("compositionend");
Select.find({ ref: "search" }).trigger("keydown.enter");
expect(spy).toHaveBeenCalledTimes(1);
});
it("will not select a value with tab if the user is composing", () => {
const Select = mountDefault({ selectOnTab: true });
const spy = jest.spyOn(Select.vm, "typeAheadSelect");
Select.find({ ref: "search" }).trigger("compositionstart");
Select.find({ ref: "search" }).trigger("keydown.tab");
expect(spy).toHaveBeenCalledTimes(0);
Select.find({ ref: "search" }).trigger("compositionend");
Select.find({ ref: "search" }).trigger("keydown.tab");
expect(spy).toHaveBeenCalledTimes(1);
});
});
});