105 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
import Switch from '..';
 | 
						|
import { mount } from '@vue/test-utils';
 | 
						|
import focusTest from '../../../tests/shared/focusTest';
 | 
						|
import { resetWarned } from '../../_util/warning';
 | 
						|
import mountTest from '../../../tests/shared/mountTest';
 | 
						|
import { ref } from 'vue';
 | 
						|
import { asyncExpect } from '../../../tests/utils';
 | 
						|
 | 
						|
describe('Switch', () => {
 | 
						|
  focusTest(Switch);
 | 
						|
  mountTest(Switch);
 | 
						|
 | 
						|
  it('should has click wave effect', async () => {
 | 
						|
    const wrapper = mount({
 | 
						|
      setup() {
 | 
						|
        const checked = ref(false);
 | 
						|
        return () => {
 | 
						|
          return (
 | 
						|
            <Switch
 | 
						|
              checked={checked.value}
 | 
						|
              onChange={() => (checked.value = !checked.value)}
 | 
						|
            ></Switch>
 | 
						|
          );
 | 
						|
        };
 | 
						|
      },
 | 
						|
    });
 | 
						|
    wrapper.find('.ant-switch').trigger('click');
 | 
						|
    await new Promise(resolve => setTimeout(resolve, 0));
 | 
						|
    expect(wrapper.html()).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it('warning if set `value`', () => {
 | 
						|
    resetWarned();
 | 
						|
 | 
						|
    const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
 | 
						|
    mount({
 | 
						|
      render() {
 | 
						|
        return <Switch value="" />;
 | 
						|
      },
 | 
						|
    });
 | 
						|
    expect(errorSpy).toHaveBeenCalledWith(
 | 
						|
      'Warning: [antdv: Switch] `value` is not validate prop, do you mean `checked`?',
 | 
						|
    );
 | 
						|
    errorSpy.mockRestore();
 | 
						|
  });
 | 
						|
 | 
						|
  it('customize checked value should work', async () => {
 | 
						|
    resetWarned();
 | 
						|
    const checked = ref(1);
 | 
						|
    const onUpdate = val => (checked.value = val);
 | 
						|
    const wrapper = mount({
 | 
						|
      render() {
 | 
						|
        return (
 | 
						|
          <Switch
 | 
						|
            {...{ 'onUpdate:checked': onUpdate }}
 | 
						|
            checked={checked.value}
 | 
						|
            unCheckedValue={1}
 | 
						|
            checkedValue={2}
 | 
						|
          />
 | 
						|
        );
 | 
						|
      },
 | 
						|
    });
 | 
						|
    await asyncExpect(() => {
 | 
						|
      wrapper.find('button').trigger('click');
 | 
						|
    });
 | 
						|
    expect(checked.value).toBe(2);
 | 
						|
 | 
						|
    await asyncExpect(() => {
 | 
						|
      wrapper.find('button').trigger('click');
 | 
						|
    });
 | 
						|
    expect(checked.value).toBe(1);
 | 
						|
  });
 | 
						|
 | 
						|
  it('customize checked value and children should work', async () => {
 | 
						|
    resetWarned();
 | 
						|
    const checked = ref(1);
 | 
						|
    const onUpdate = val => (checked.value = val);
 | 
						|
    const wrapper = mount({
 | 
						|
      render() {
 | 
						|
        return (
 | 
						|
          <Switch
 | 
						|
            {...{ 'onUpdate:checked': onUpdate }}
 | 
						|
            checked={checked.value}
 | 
						|
            unCheckedValue={1}
 | 
						|
            checkedValue={2}
 | 
						|
            checkedChildren="on"
 | 
						|
            unCheckedChildren="off"
 | 
						|
          />
 | 
						|
        );
 | 
						|
      },
 | 
						|
    });
 | 
						|
    await asyncExpect(() => {
 | 
						|
      wrapper.find('button').trigger('click');
 | 
						|
    });
 | 
						|
    expect(checked.value).toBe(2);
 | 
						|
    expect(wrapper.find('.ant-switch-inner').text()).toBe('on');
 | 
						|
 | 
						|
    await asyncExpect(() => {
 | 
						|
      wrapper.find('button').trigger('click');
 | 
						|
    });
 | 
						|
    expect(checked.value).toBe(1);
 | 
						|
    expect(wrapper.find('.ant-switch-inner').text()).toBe('off');
 | 
						|
  });
 | 
						|
});
 |