From 902a2eafc95f16e5ce97d2e65ec411dbc7c41e82 Mon Sep 17 00:00:00 2001 From: unix Date: Sat, 6 Jun 2020 05:46:33 +0800 Subject: [PATCH] test(use-input): add hooks-bsaed testcase --- .../__tests__/use-input.test.tsx | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 components/auto-complete/__tests__/use-input.test.tsx diff --git a/components/auto-complete/__tests__/use-input.test.tsx b/components/auto-complete/__tests__/use-input.test.tsx new file mode 100644 index 0000000..21ebd95 --- /dev/null +++ b/components/auto-complete/__tests__/use-input.test.tsx @@ -0,0 +1,60 @@ +import React, { useEffect } from 'react' +import { mount } from 'enzyme' +import { AutoComplete, useInput } from 'components' + +describe('UseInput', () => { + it('should follow change with use-input', () => { + let log = '' + const logSpy = jest.spyOn(console, 'log').mockImplementation(msg => (log = msg)) + const MockInput: React.FC<{ value?: string }> = ({ value }) => { + const { state, setState, bindings } = useInput('') + useEffect(() => { + if (value) setState(value) + }, [value]) + useEffect(() => { + if (state) console.log(state) + }, [state]) + return + } + + const wrapper = mount() + wrapper.setProps({ value: 'test' }) + const input = wrapper.find('input').at(0).getDOMNode() as HTMLInputElement + + expect(input.value).toEqual('test') + expect(log).toContain('test') + + log = '' + wrapper + .find('input') + .at(0) + .simulate('change', { target: { value: 'test-change' } }) + expect(log).toContain('test-change') + logSpy.mockRestore() + }) + + it('should follow change with use-input', () => { + const MockInput: React.FC<{ value?: string; resetValue?: boolean }> = ({ + value, + resetValue, + }) => { + const { reset, setState, bindings } = useInput('') + useEffect(() => { + if (value) setState(value) + }, [value]) + useEffect(() => { + if (resetValue) reset() + }, [resetValue]) + return + } + + const wrapper = mount() + wrapper.setProps({ value: 'test' }) + let input = wrapper.find('input').at(0).getDOMNode() as HTMLInputElement + expect(input.value).toEqual('test') + + wrapper.setProps({ resetValue: true }) + input = wrapper.find('input').at(0).getDOMNode() as HTMLInputElement + expect(input.value).toEqual('') + }) +})