diff --git a/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.js b/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.js index 0118fa53f3ad..cfd0a2e6bae8 100644 --- a/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.js +++ b/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.js @@ -14,6 +14,7 @@ let React; let ReactCache; let ReactTestRenderer; let waitForAll; +let act; describe('ReactTestRenderer', () => { beforeEach(() => { @@ -27,6 +28,7 @@ describe('ReactTestRenderer', () => { ReactTestRenderer = require('react-test-renderer'); const InternalTestUtils = require('internal-test-utils'); waitForAll = InternalTestUtils.waitForAll; + act = ReactTestRenderer.act; }); it('should warn if used to render a ReactDOM portal', () => { @@ -120,5 +122,52 @@ describe('ReactTestRenderer', () => { await waitForAll([]); expect(root.toJSON().children).toEqual(['dynamic']); }); + + it('failing test', async () => { + const SELECT_ALL_FILTERS_VALUE = '_selected_all_filters_'; + function Parent() { + const [selectedFilters, setSelectedFilters] = React.useState(null); + const filterList = ['green', 'red', 'gray']; + return ( + + ); + } + + function Child({selectedFilters, setSelectedFilters, filterList}) { + const selectedFiltersString = React.useMemo(() => { + if (selectedFilters == null) { + return 'none'; + } + if (selectedFilters.length === 1) { + return selectedFilters[0]; + } + return SELECT_ALL_FILTERS_VALUE; + }, [selectedFilters]); + + React.useEffect(() => { + if (selectedFilters == null) { + setSelectedFilters(SELECT_ALL_FILTERS_VALUE); + } + }, [selectedFilters]); + + return
Selected Filters: {selectedFiltersString}
; + } + + let root; + act(() => { + root = ReactTestRenderer.create(); + }); + + expect(root.toJSON()).toMatchInlineSnapshot(` +
+ Selected Filters: + _selected_all_filters_ +
+ `); + }); }); });