Files
react/components/checkbox/__tests__/group.test.tsx
unix 3a8dd34010 chore: upgrade deps
style(prettier): format code style
2020-05-06 14:51:15 +08:00

99 lines
3.1 KiB
TypeScript

import React from 'react'
import { mount, render } from 'enzyme'
import { Checkbox } from 'components'
describe('Checkbox Group', () => {
it('should render correctly', () => {
const wrapper = mount(
<Checkbox.Group value={[]}>
<Checkbox value="sydney">Sydney</Checkbox>
</Checkbox.Group>,
)
expect(() => wrapper.unmount()).not.toThrow()
const rendered = render(
<Checkbox.Group value={[]}>
<Checkbox value="sydney">Sydney</Checkbox>
</Checkbox.Group>,
)
expect(rendered).toMatchSnapshot()
})
it('should work correctly with initial value', () => {
let wrapper = mount(
<Checkbox.Group value={['sydney']}>
<Checkbox value="sydney">Sydney</Checkbox>
<Checkbox value="beijing">BeiJing</Checkbox>
</Checkbox.Group>,
)
const sydney = wrapper.find('input').at(0).getDOMNode()
expect((sydney as HTMLInputElement).checked).toBeTruthy()
const beijing = wrapper.find('input').at(1).getDOMNode()
expect((beijing as HTMLInputElement).checked).not.toBeTruthy()
})
it('should change value after click', () => {
let value = ['sydney']
const wrapper = mount(
<Checkbox.Group value={['sydney']} onChange={val => (value = val)}>
<Checkbox value="sydney">Sydney</Checkbox>
<Checkbox value="beijing">BeiJing</Checkbox>
</Checkbox.Group>,
)
const sydney = wrapper.find('input').at(0)
sydney.simulate('change')
expect(value.length).toBe(0)
const beijing = wrapper.find('input').at(1)
beijing.simulate('change')
expect(value).toEqual(expect.arrayContaining(['beijing']))
})
it('should ignore events when disabled', () => {
let value = ['sydney']
const wrapper = mount(
<Checkbox.Group disabled value={['sydney']} onChange={val => (value = val)}>
<Checkbox value="sydney">Sydney</Checkbox>
<Checkbox value="beijing">BeiJing</Checkbox>
</Checkbox.Group>,
)
const sydney = wrapper.find('input').at(0)
sydney.simulate('change')
expect(value.length).not.toBe(0)
const beijing = wrapper.find('input').at(1)
beijing.simulate('change')
expect(value).not.toEqual(expect.arrayContaining(['beijing']))
})
it('should throw error when value missing', () => {
let errorMessage = ''
const Group = Checkbox.Group as any
const errorSpy = jest.spyOn(console, 'error').mockImplementation(msg => (errorMessage = msg))
mount(
<Group>
<Checkbox value="sydney">Sydney</Checkbox>
<Checkbox value="beijing">BeiJing</Checkbox>
</Group>,
)
expect(errorMessage).toContain('required')
errorSpy.mockRestore()
})
it('should throw error when set check prop in group', () => {
let errorMessage = ''
const errorSpy = jest.spyOn(console, 'error').mockImplementation(msg => (errorMessage = msg))
mount(
<Checkbox.Group value={[]}>
<Checkbox value="sydney" checked>
Sydney
</Checkbox>
<Checkbox value="beijing">BeiJing</Checkbox>
</Checkbox.Group>,
)
expect(errorMessage.toLowerCase()).toContain('remove props')
errorSpy.mockRestore()
})
})