87 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
import { mount } from '@vue/test-utils';
 | 
						|
import { asyncExpect } from '../../../tests/utils';
 | 
						|
import Search from '../search';
 | 
						|
import Transfer from '../index';
 | 
						|
 | 
						|
describe('Search', () => {
 | 
						|
  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
 | 
						|
 | 
						|
  afterEach(() => {
 | 
						|
    errorSpy.mockReset();
 | 
						|
  });
 | 
						|
 | 
						|
  afterAll(() => {
 | 
						|
    errorSpy.mockRestore();
 | 
						|
  });
 | 
						|
 | 
						|
  it('should show cross icon when input value exists', () => {
 | 
						|
    const props = {
 | 
						|
      props: {
 | 
						|
        value: '',
 | 
						|
      },
 | 
						|
    };
 | 
						|
    const wrapper = mount(Search, props);
 | 
						|
 | 
						|
    expect(wrapper.html()).toMatchSnapshot();
 | 
						|
 | 
						|
    wrapper.setProps({ value: 'a' });
 | 
						|
 | 
						|
    expect(wrapper.html()).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it('onSearch', async () => {
 | 
						|
    const dataSource = [
 | 
						|
      {
 | 
						|
        key: 'a',
 | 
						|
        title: 'a',
 | 
						|
        description: 'a',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        key: 'b',
 | 
						|
        title: 'b',
 | 
						|
        description: 'b',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        key: 'c',
 | 
						|
        title: 'c',
 | 
						|
        description: 'c',
 | 
						|
      },
 | 
						|
    ];
 | 
						|
 | 
						|
    const onSearch = jest.fn();
 | 
						|
    const wrapper = mount(
 | 
						|
      {
 | 
						|
        render() {
 | 
						|
          return (
 | 
						|
            <Transfer
 | 
						|
              dataSource={dataSource}
 | 
						|
              selectedKeys={[]}
 | 
						|
              targetKeys={[]}
 | 
						|
              render={item => item.title}
 | 
						|
              onSearch={onSearch}
 | 
						|
              showSearch
 | 
						|
            />
 | 
						|
          );
 | 
						|
        },
 | 
						|
      },
 | 
						|
      {
 | 
						|
        sync: false,
 | 
						|
      },
 | 
						|
    );
 | 
						|
    await asyncExpect(() => {
 | 
						|
      const input = wrapper.findAll('.ant-input')[0];
 | 
						|
      input.element.value = 'a';
 | 
						|
      input.trigger('input');
 | 
						|
    });
 | 
						|
 | 
						|
    await asyncExpect(() => {
 | 
						|
      expect(onSearch).toBeCalledWith('left', 'a');
 | 
						|
    });
 | 
						|
 | 
						|
    onSearch.mockReset();
 | 
						|
 | 
						|
    wrapper.findAll('.ant-input-clear-icon')[0].trigger('click');
 | 
						|
    expect(onSearch).toBeCalledWith('left', '');
 | 
						|
  });
 | 
						|
});
 |