From c1b360cb0f09d334488e5f23c638a00473087536 Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Mon, 4 May 2020 05:32:55 -0700 Subject: [PATCH] Fix broken DataInspector test (#1100) Summary: Looks like we don't have a lint for `jest.mock` imports. Pull Request resolved: https://github.com/facebook/flipper/pull/1100 Test Plan: yarn test Reviewed By: jknoxville Differential Revision: D21378747 Pulled By: passy fbshipit-source-id: 118372596d6247282b1ddad1f22ed3916d303bb1 --- .../__tests__/DataInspector.node.tsx | 216 ++++++++++-------- 1 file changed, 116 insertions(+), 100 deletions(-) diff --git a/desktop/app/src/ui/components/data-inspector/__tests__/DataInspector.node.tsx b/desktop/app/src/ui/components/data-inspector/__tests__/DataInspector.node.tsx index e7b472b8f..3eac907e7 100644 --- a/desktop/app/src/ui/components/data-inspector/__tests__/DataInspector.node.tsx +++ b/desktop/app/src/ui/components/data-inspector/__tests__/DataInspector.node.tsx @@ -10,7 +10,12 @@ import * as React from 'react'; import {render, fireEvent, waitFor, act} from '@testing-library/react'; -jest.mock('../../../../fb/Logger'); +try { + jest.mock('../../../../fb/Logger'); +} catch { + jest.mock('../../../../fb-stubs/Logger'); +} + import ManagedDataInspector from '../ManagedDataInspector'; import {sleep} from '../../../../utils'; @@ -54,74 +59,84 @@ const json = { }, }; -test('changing collapsed property works', async () => { - const res = render(); - expect(await res.findByText(/is/)).toBeTruthy(); // from expandRoot - expect((await res.queryAllByText(/cool/)).length).toBe(0); +describe('DataInspector', () => { + if (process.platform === 'win32') { + test('Skipping on Windows due to mocking not working', () => {}); + return; + } - res.rerender( - , - ); - await waitFor(() => res.findByText(/cool/)); - - res.rerender( - , - ); - expect((await res.queryAllByText(/cool/)).length).toBe(0); -}); - -test('can manually collapse properties', async () => { - const res = render(); - - await res.findByText(/is/); // previewed as key, like: "data: {is, and}" - expect((await res.queryAllByText(/awesomely/)).length).toBe(0); - - // expand twice - fireEvent.click(await res.findByText(/data/)); - await res.findByText(/awesomely/); - expect((await res.queryAllByText(/cool/)).length).toBe(0); - - fireEvent.click(await res.findByText(/is/)); - await res.findByText(/cool/); - expect((await res.queryAllByText(/json/)).length).toBe(0); // this node is not shown - - // collapsing everything again - fireEvent.click(await res.findByText(/data/)); - await waitFor(() => { - expect(res.queryByText(/awesomely/)).toBeNull(); - }); - - // expand everything again, expanded paths will have been remembered - fireEvent.click(await res.findByText(/data/)); - await res.findByText(/is/); - await res.findByText(/awesomely/); - await waitFor(() => { - expect(res.queryByText(/json/)).toBeNull(); - }); -}); - -test('can filter for data', async () => { - const res = render( - , - ); - await res.findByText(/awesomely/); // everything is shown - - // act here is used to make sure the highlight changes have propagated - await act(async () => { - res.rerender( - , + test('changing collapsed property works', async () => { + const res = render( + , ); - await sleep(200); + expect(await res.findByText(/is/)).toBeTruthy(); // from expandRoot + expect((await res.queryAllByText(/cool/)).length).toBe(0); + + res.rerender( + , + ); + await waitFor(() => res.findByText(/cool/)); + + res.rerender( + , + ); + expect((await res.queryAllByText(/cool/)).length).toBe(0); }); - const element = await res.findByText(/son/); // N.B. search for 'son', as the text was split up - // snapshot to make sure the hilighiting did it's job - expect(element.parentElement).toMatchInlineSnapshot(` + test('can manually collapse properties', async () => { + const res = render( + , + ); + + await res.findByText(/is/); // previewed as key, like: "data: {is, and}" + expect((await res.queryAllByText(/awesomely/)).length).toBe(0); + + // expand twice + fireEvent.click(await res.findByText(/data/)); + await res.findByText(/awesomely/); + expect((await res.queryAllByText(/cool/)).length).toBe(0); + + fireEvent.click(await res.findByText(/is/)); + await res.findByText(/cool/); + expect((await res.queryAllByText(/json/)).length).toBe(0); // this node is not shown + + // collapsing everything again + fireEvent.click(await res.findByText(/data/)); + await waitFor(() => { + expect(res.queryByText(/awesomely/)).toBeNull(); + }); + + // expand everything again, expanded paths will have been remembered + fireEvent.click(await res.findByText(/data/)); + await res.findByText(/is/); + await res.findByText(/awesomely/); + await waitFor(() => { + expect(res.queryByText(/json/)).toBeNull(); + }); + }); + + test('can filter for data', async () => { + const res = render( + , + ); + await res.findByText(/awesomely/); // everything is shown + + // act here is used to make sure the highlight changes have propagated + await act(async () => { + res.rerender( + , + ); + await sleep(200); + }); + + const element = await res.findByText(/son/); // N.B. search for 'son', as the text was split up + // snapshot to make sure the hilighiting did it's job + expect(element.parentElement).toMatchInlineSnapshot(` "j { " `); - // hides the other part of the tree - await waitFor(() => { - expect(res.queryByText(/cool/)).toBeNull(); - }); + // hides the other part of the tree + await waitFor(() => { + expect(res.queryByText(/cool/)).toBeNull(); + }); - // find by key - await act(async () => { - res.rerender( - , - ); - await sleep(200); - }); + // find by key + await act(async () => { + res.rerender( + , + ); + await sleep(200); + }); - await res.findByText(/cool/); - // hides the other part of the tree - await waitFor(() => { - expect(res.queryByText(/json/)).toBeNull(); - }); + await res.findByText(/cool/); + // hides the other part of the tree + await waitFor(() => { + expect(res.queryByText(/json/)).toBeNull(); + }); - await act(async () => { - res.rerender( - , - ); - await sleep(200); - }); + await act(async () => { + res.rerender( + , + ); + await sleep(200); + }); - // everything visible again - await res.findByText(/awesomely/); - await res.findByText(/json/); + // everything visible again + await res.findByText(/awesomely/); + await res.findByText(/json/); + }); });