vant/packages/search/test/index.spec.js
2019-05-27 14:59:58 +08:00

110 lines
2.0 KiB
JavaScript

/* eslint-disable object-shorthand */
import Search from '..';
import { mount } from '../../../test/utils';
test('listen input event', () => {
const onInput = jest.fn();
const wrapper = mount(Search, {
context: {
on: {
input: onInput
}
}
});
const input = wrapper.find('input');
input.element.value = '1';
input.trigger('input');
expect(onInput).toHaveBeenCalledWith('1');
});
test('cancel search', () => {
const onInput = jest.fn();
const onCancel = jest.fn();
const wrapper = mount(Search, {
propsData: {
value: 'test',
showAction: true
},
context: {
on: {
input: onInput,
cancel: onCancel
}
}
});
const cancel = wrapper.find('.van-search__action div');
cancel.trigger('click');
expect(onInput).toHaveBeenCalledWith('');
expect(onCancel).toHaveBeenCalled();
});
test('emit a search event', () => {
const onSearch = jest.fn();
const onKeypress = jest.fn();
const wrapper = mount(Search, {
context: {
on: {
search: onSearch,
keypress: onKeypress
}
}
});
const input = wrapper.find('input');
input.trigger('keypress.enter');
input.trigger('keypress.a');
expect(onSearch).toHaveBeenCalled();
expect(onKeypress).toHaveBeenCalled();
});
test('render label slot', () => {
const wrapper = mount(Search, {
scopedSlots: {
label() {
return 'Custom Label';
}
}
});
expect(wrapper).toMatchSnapshot();
});
test('left-icon prop', () => {
const wrapper = mount(Search, {
propsData: {
leftIcon: 'setting-o'
}
});
expect(wrapper).toMatchSnapshot();
});
test('right-icon prop', () => {
const wrapper = mount(Search, {
propsData: {
rightIcon: 'setting-o'
}
});
expect(wrapper).toMatchSnapshot();
});
test('right-icon slot', () => {
const wrapper = mount(Search, {
scopedSlots: {
'right-icon'() {
return 'Custom Right Icon';
}
}
});
expect(wrapper).toMatchSnapshot();
});