/** * External dependencies */ import TestRenderer, { act } from 'react-test-renderer'; /** * Internal dependencies */ import { useShallowEqual } from '../use-shallow-equal'; describe( 'useShallowEqual', () => { const TestComponent = ( { testValue } ) => { const newValue = useShallowEqual( testValue ); return
; }; let renderer; beforeEach( () => ( renderer = null ) ); it.each` testValueA | aType | testValueB | bType | expectEqual ${ { a: 'b', foo: 'bar' } } | ${ 'object' } | ${ { foo: 'bar', a: 'b' } } | ${ 'object' } | ${ true } ${ { a: 'b', foo: 'bar' } } | ${ 'object' } | ${ { foo: 'bar', a: 'c' } } | ${ 'object' } | ${ false } ${ [ 'b', 'bar' ] } | ${ 'array' } | ${ [ 'b', 'bar' ] } | ${ 'array' } | ${ true } ${ [ 'b', 'bar' ] } | ${ 'array' } | ${ [ 'bar', 'b' ] } | ${ 'array' } | ${ false } ${ 1 } | ${ 'number' } | ${ 1 } | ${ 'number' } | ${ true } ${ 1 } | ${ 'number' } | ${ '1' } | ${ 'string' } | ${ false } ${ '1' } | ${ 'string' } | ${ '1' } | ${ 'string' } | ${ true } ${ 1 } | ${ 'number' } | ${ 2 } | ${ 'number' } | ${ false } ${ 1 } | ${ 'number' } | ${ true } | ${ 'bool' } | ${ false } ${ 0 } | ${ 'number' } | ${ false } | ${ 'bool' } | ${ false } ${ true } | ${ 'bool' } | ${ true } | ${ 'bool' } | ${ true } `( '$testValueA ($aType) and $testValueB ($bType) are expected to be equal ($expectEqual)', ( { testValueA, testValueB, expectEqual } ) => { let testPropValue; act( () => { renderer = TestRenderer.create( ); } ); testPropValue = renderer.root.findByType( 'div' ).props.newValue; expect( testPropValue ).toBe( testValueA ); // do update act( () => { renderer.update( ); } ); testPropValue = renderer.root.findByType( 'div' ).props.newValue; if ( expectEqual ) { expect( testPropValue ).toBe( testValueA ); } else { expect( testPropValue ).toBe( testValueB ); } } ); } );