@yncoder/element-react
Version:
Element UI for React
140 lines (115 loc) • 4.73 kB
JSX
import React from 'react';
import { mount, render } from 'enzyme';
import { Switch, Tooltip } from '../../../src';
test('Basic usage', () => {
const switch1 = mount(
<Switch
value={true}
onText=""
offText="">
</Switch>
);
expect(switch1.find('label.el-switch .el-switch__label').at(0).text()).toEqual('');
expect(switch1.find('label.el-switch .el-switch__label').at(1).text()).toEqual('');
expect(switch1.find('label.el-switch').hasClass('is-checked')).toEqual(true);
// switch off
switch1.find('input').simulate('change', {target: {value: false}});
expect(switch1.find('label.el-switch .el-switch__label').at(0).text()).toEqual('');
expect(switch1.find('label.el-switch .el-switch__label').at(1).text()).toEqual('');
expect(switch1.find('label.el-switch').at(0).hasClass('is-checked')).toEqual(false);
const switch2 = mount(
<Switch
value={true}
onColor="#13ce66"
offColor="#ff4949">
</Switch>
);
expect(switch2.find('label.el-switch').at(0).hasClass('is-checked')).toEqual(true);
expect(switch2.find('label.el-switch .el-switch__label').at(0).text()).toEqual('ON');
expect(switch2.find('label.el-switch .el-switch__label').at(1).text()).toEqual('OFF');
expect(switch2.find('label.el-switch .el-switch__label').at(0).prop('style').display).toEqual(undefined);
expect(switch2.find('label.el-switch .el-switch__label').at(1).prop('style').display).toEqual('none');
// switch off
switch2.find('input[type="checkbox"]').simulate('change', {target: {value: false}});
expect(switch2.find('label.el-switch').at(0).hasClass('is-checked')).toEqual(false);
expect(switch2.find('label.el-switch .el-switch__label').at(0).text()).toEqual('ON');
expect(switch2.find('label.el-switch .el-switch__label').at(1).text()).toEqual('OFF');
expect(switch2.find('label.el-switch .el-switch__label').at(0).prop('style').display).toEqual('none');
expect(switch2.find('label.el-switch .el-switch__label').at(1).prop('style').display).toEqual(undefined);
});
test('Extended value types', () => {
const state = {
value: 100
};
let testCallBack = (value)=> {
state.value = value;
};
const component = mount(
<div>
<Tooltip
placement="top"
content={
<div>Switch value: {state.value}</div>
}>
<Switch
value={state.value}
onColor="#13ce66"
offColor="#ff4949"
onValue={100}
offValue={0}
onChange={testCallBack}>
</Switch>
</Tooltip>
</div>);
expect(component.find('label.el-switch.el-switch--wide').at(0).hasClass('is-checked')).toEqual(true);
expect(component.find('div .el-switch__label').at(0).text()).toEqual('ON');
expect(component.find('div .el-switch__label').at(1).text()).toEqual('OFF');
expect(component.find('div .el-switch__label').at(0).prop('style').display).toEqual(undefined);
expect(component.find('div .el-switch__label').at(1).prop('style').display).toEqual('none');
expect(state.value).toBe(100);
// switch off
component.find('input[type="checkbox"]').simulate('change', {target: {value: false}});
expect(component.find('label.el-switch.el-switch--wide').at(0).hasClass('is-checked')).toEqual(false);
expect(component.find('div .el-switch__label').at(0).text()).toEqual('ON');
expect(component.find('div .el-switch__label').at(1).text()).toEqual('OFF');
expect(component.find('div .el-switch__label').at(0).prop('style').display).toEqual('none');
expect(component.find('div .el-switch__label').at(1).prop('style').display).toEqual(undefined);
expect(state.value).toBe(0);
});
test('Disabled', () => {
const switch1 = mount(
<Switch
value={true}
onText=""
offText=""
disabled>
</Switch>
);
expect(switch1.find('label.el-switch').at(0).hasClass('is-disabled')).toEqual(true);
expect(switch1.find('input[type="checkbox"]').at(0).prop('disabled')).toEqual(true);
const switch2 = mount(
<Switch
value={true}
disabled>
</Switch>);
expect(switch2.find('label.el-switch').at(0).hasClass('is-disabled')).toEqual(true);
expect(switch2.find('input[type="checkbox"]').at(0).prop('disabled')).toEqual(true);
});
test('Focus', () => {
const focusFn = jest.fn();
const blurFn = jest.fn();
const switch1 = mount(
<Switch
allowFocus={true}
onFocus={focusFn}
onBlur={blurFn}
>
</Switch>
);
expect(focusFn.mock.calls.length).toBe(0);
expect(blurFn.mock.calls.length).toBe(0);
switch1.find('input').simulate('focus');
expect(focusFn.mock.calls.length).toBe(1);
switch1.find('input').simulate('blur');
expect(blurFn.mock.calls.length).toBe(1);
});