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');
 | |
|   });
 | |
| });
 |