From e73133823919cafe6f45ee8fd4a5597be483fe73 Mon Sep 17 00:00:00 2001 From: Martin Hochel Date: Sun, 15 Jul 2018 21:23:01 +0200 Subject: [PATCH] fix(enzyme): change generic P,S params typo in shallow/mount (#27255) --- types/enzyme/enzyme-tests.tsx | 55 +++++++++++++++++++++++++++++++++++ types/enzyme/index.d.ts | 4 +-- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/types/enzyme/enzyme-tests.tsx b/types/enzyme/enzyme-tests.tsx index b97711edec..e1762b843e 100644 --- a/types/enzyme/enzyme-tests.tsx +++ b/types/enzyme/enzyme-tests.tsx @@ -86,6 +86,34 @@ function ShallowWrapperTest() { let anotherStatelessWrapper: ShallowWrapper; let anotherComponentWrapper: ShallowWrapper; + // testStatePropsInstanceFn(shallow()); + function testStatePropsInstance() { + const wrapper = shallow(); + + const { + numberProp, // $ExpectType number + stringProp // $ExpectType string + } = wrapper.props(); + const { + stateProperty // $ExpectType string + } = wrapper.state(); + const { + handleEcho // $ExpectType (value: string) => string + } = wrapper.instance(); + + // $ExpectError + wrapper.setState({stateProperty: 123}); + // $ExpectError + wrapper.setState({statePropertyzasd: 'hello'}); + wrapper.setState({stateProperty: 'hello'}); + + // $ExpectError + wrapper.setProps({numberProp: '123'}); + // $ExpectError + wrapper.setProps({numberPropzasd: 'hello'}); + wrapper.setProps({numberProp: 123}); + } + function test_props_state_inferring() { let wrapper: ShallowWrapper; wrapper = shallow(); @@ -455,6 +483,33 @@ function ReactWrapperTest() { let anotherStatelessWrapper: ReactWrapper; let anotherComponentWrapper: ReactWrapper; + function testStatePropsInstance() { + const wrapper = mount(); + + const { + numberProp, // $ExpectType number + stringProp // $ExpectType string + } = wrapper.props(); + const { + stateProperty // $ExpectType string + } = wrapper.state(); + const { + handleEcho // $ExpectType (value: string) => string + } = wrapper.instance(); + + // $ExpectError + wrapper.setState({stateProperty: 123}); + // $ExpectError + wrapper.setState({statePropertyzasd: 'hello'}); + wrapper.setState({stateProperty: 'hello'}); + + // $ExpectError + wrapper.setProps({numberProp: '123'}); + // $ExpectError + wrapper.setProps({numberPropzasd: 'hello'}); + wrapper.setProps({numberProp: 123}); + } + function test_prop_state_inferring() { let wrapper: ReactWrapper; wrapper = mount(); diff --git a/types/enzyme/index.d.ts b/types/enzyme/index.d.ts index f8dc9e9406..7327f69511 100644 --- a/types/enzyme/index.d.ts +++ b/types/enzyme/index.d.ts @@ -589,14 +589,14 @@ export interface MountRendererProps { * Shallow rendering is useful to constrain yourself to testing a component as a unit, and to ensure that * your tests aren't indirectly asserting on behavior of child components. */ -export function shallow(node: ReactElement

, options?: ShallowRendererProps): ShallowWrapper; +export function shallow(node: ReactElement

, options?: ShallowRendererProps): ShallowWrapper; export function shallow

(node: ReactElement

, options?: ShallowRendererProps): ShallowWrapper; export function shallow(node: ReactElement

, options?: ShallowRendererProps): ShallowWrapper; /** * Mounts and renders a react component into the document and provides a testing wrapper around it. */ -export function mount(node: ReactElement

, options?: MountRendererProps): ReactWrapper; +export function mount(node: ReactElement

, options?: MountRendererProps): ReactWrapper; export function mount

(node: ReactElement

, options?: MountRendererProps): ReactWrapper; export function mount(node: ReactElement

, options?: MountRendererProps): ReactWrapper;