mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
* fix(NumberKeyboard): incorrect extra key * test(NumberKeyboard): add extra-key test case
241 lines
5.4 KiB
JavaScript
241 lines
5.4 KiB
JavaScript
import NumberKeyboard from '..';
|
|
import { mount, trigger } from '../../../test';
|
|
|
|
function clickKey(key) {
|
|
trigger(key, 'touchstart');
|
|
trigger(key, 'touchend');
|
|
}
|
|
|
|
test('click number key', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
theme: 'custom',
|
|
closeButtonText: 'close',
|
|
},
|
|
});
|
|
|
|
clickKey(wrapper.findAll('.van-key').at(0));
|
|
expect(wrapper.emitted('input')[0][0]).toEqual(1);
|
|
|
|
wrapper.destroy();
|
|
});
|
|
|
|
test('click delete key', () => {
|
|
const wrapper = mount(NumberKeyboard);
|
|
|
|
clickKey(wrapper.findAll('.van-key').at(11));
|
|
expect(wrapper.emitted('delete')).toBeTruthy();
|
|
});
|
|
|
|
test('click collapse key', () => {
|
|
const wrapper = mount(NumberKeyboard);
|
|
clickKey(wrapper.findAll('.van-key').at(9));
|
|
expect(wrapper.emitted('input')).toBeFalsy();
|
|
expect(wrapper.emitted('blur')).toBeFalsy();
|
|
|
|
wrapper.setProps({ show: true });
|
|
clickKey(wrapper.findAll('.van-key').at(9));
|
|
expect(wrapper.emitted('blur')).toBeTruthy();
|
|
});
|
|
|
|
test('click close button', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
theme: 'custom',
|
|
closeButtonText: 'close',
|
|
},
|
|
});
|
|
|
|
clickKey(wrapper.findAll('.van-key').at(12));
|
|
expect(wrapper.emitted('close')).toBeTruthy();
|
|
});
|
|
|
|
test('listen to show/hide event when has transtion', () => {
|
|
const wrapper = mount(NumberKeyboard);
|
|
wrapper.vm.show = true;
|
|
wrapper.trigger('animationend');
|
|
wrapper.vm.show = false;
|
|
wrapper.trigger('animationend');
|
|
expect(wrapper.emitted('show')).toBeTruthy();
|
|
expect(wrapper.emitted('hide')).toBeTruthy();
|
|
});
|
|
|
|
test('listen to show event when no transtion', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
transition: false,
|
|
},
|
|
});
|
|
wrapper.vm.show = true;
|
|
wrapper.vm.show = false;
|
|
expect(wrapper.emitted('show')).toBeTruthy();
|
|
expect(wrapper.emitted('hide')).toBeTruthy();
|
|
});
|
|
|
|
test('render title', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
title: 'Title',
|
|
closeButtonText: 'Close',
|
|
},
|
|
});
|
|
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
test('title-left slot', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
scopedSlots: {
|
|
'title-left': () => 'Custom Title Left',
|
|
},
|
|
});
|
|
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
test('extra-key prop', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
extraKey: 'foo',
|
|
},
|
|
});
|
|
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
test('extra-key slot', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
scopedSlots: {
|
|
'extra-key': () => 'Custom Extra Key',
|
|
},
|
|
});
|
|
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
test('hideOnClickOutside', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
show: true,
|
|
},
|
|
});
|
|
|
|
trigger(document.body, 'touchstart');
|
|
expect(wrapper.emitted('blur')).toBeTruthy();
|
|
});
|
|
|
|
test('disable hideOnClickOutside', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
show: true,
|
|
hideOnClickOutside: false,
|
|
},
|
|
});
|
|
|
|
trigger(document.body, 'touchstart');
|
|
expect(wrapper.emitted('blur')).toBeFalsy();
|
|
});
|
|
|
|
test('focus on key', () => {
|
|
const wrapper = mount(NumberKeyboard);
|
|
|
|
const key = wrapper.find('.van-key');
|
|
trigger(key, 'touchstart');
|
|
expect(wrapper).toMatchSnapshot();
|
|
trigger(key, 'touchend');
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
test('move and blur key', () => {
|
|
const wrapper = mount(NumberKeyboard);
|
|
|
|
const key = wrapper.find('.van-key');
|
|
trigger(key, 'touchstart');
|
|
expect(wrapper).toMatchSnapshot();
|
|
trigger(key, 'touchmove', 0, 0);
|
|
expect(wrapper).toMatchSnapshot();
|
|
trigger(key, 'touchmove', 100, 0);
|
|
expect(wrapper).toMatchSnapshot();
|
|
trigger(key, 'touchend');
|
|
expect(wrapper.emitted('input')).toBeFalsy();
|
|
});
|
|
|
|
test('bind value', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
value: '',
|
|
},
|
|
listeners: {
|
|
'update:value': (value) => {
|
|
wrapper.setProps({ value });
|
|
},
|
|
},
|
|
});
|
|
|
|
const keys = wrapper.findAll('.van-key');
|
|
clickKey(keys.at(0));
|
|
clickKey(keys.at(1));
|
|
|
|
expect(wrapper.vm.value).toEqual('12');
|
|
|
|
clickKey(keys.at(11));
|
|
expect(wrapper.vm.value).toEqual('1');
|
|
});
|
|
|
|
test('maxlength', () => {
|
|
const onInput = jest.fn();
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
value: '',
|
|
maxlength: 1,
|
|
},
|
|
listeners: {
|
|
input: onInput,
|
|
'update:value': (value) => {
|
|
wrapper.setProps({ value });
|
|
},
|
|
},
|
|
});
|
|
|
|
const keys = wrapper.findAll('.van-key');
|
|
clickKey(keys.at(0));
|
|
clickKey(keys.at(1));
|
|
|
|
expect(wrapper.vm.value).toEqual('1');
|
|
expect(onInput).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
test('show-delete-key prop', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
showDeleteKey: true,
|
|
},
|
|
});
|
|
|
|
expect(wrapper.contains('.van-key--delete')).toBeTruthy();
|
|
|
|
wrapper.setData({ showDeleteKey: false });
|
|
expect(wrapper.contains('.van-key--delete')).toBeFalsy();
|
|
|
|
wrapper.setData({
|
|
theme: 'custom',
|
|
showDeleteKey: true,
|
|
});
|
|
expect(wrapper.contains('.van-key--delete')).toBeTruthy();
|
|
|
|
wrapper.setData({ showDeleteKey: false });
|
|
expect(wrapper.contains('.van-key--delete')).toBeFalsy();
|
|
});
|
|
|
|
test('close-button-loading prop', () => {
|
|
const wrapper = mount(NumberKeyboard, {
|
|
propsData: {
|
|
show: true,
|
|
theme: 'custom',
|
|
closeButtonLoading: true,
|
|
},
|
|
});
|
|
|
|
expect(wrapper.contains('.van-key__loading-icon')).toBeTruthy();
|
|
});
|