import React from "react"; import { render, TestWrapper, MockJSONServer } from "@test"; import { act, Simulate } from "react-dom/test-utils"; import { renderHook } from "@testing-library/react-hooks"; import { ImportButton } from "."; import { useImport } from "@hooks/import"; const parseMock = jest.fn(); jest.mock("papaparse", () => { return { parse: jest.fn(() => parseMock()), }; }); describe(" usage with useImport", () => { it("should render without crashing", () => { const { result: { current: importProps }, } = renderHook(() => useImport(), { wrapper: TestWrapper({ dataProvider: MockJSONServer, resources: [{ name: "categories" }], }), }); const { container, getByText } = render( Test, ); expect(container).toBeTruthy(); getByText("Test"); }); it("should render without text show only icon", () => { const { result: { current: importProps }, } = renderHook(() => useImport(), { wrapper: TestWrapper({ dataProvider: MockJSONServer, resources: [{ name: "categories" }], }), }); const { container, queryByText } = render( , ); expect(container).toBeTruthy(); expect(queryByText("Import")).not.toBeInTheDocument(); }); it("should trigger parse when used with useImport hook", async () => { const { result: { current: importProps }, } = renderHook(() => useImport(), { wrapper: TestWrapper({ dataProvider: MockJSONServer, resources: [{ name: "categories" }], }), }); const { container } = render( Test, ); const file = new File( [ `"id","title","createdAt","updatedAt" "35ad97dd-9379-480a-b6ac-6fc9c13e9224","Viral Strategist Local","2021-04-09T12:03:23.933Z","2021-04-09T12:03:23.933Z" "9a428977-1b03-4c3e-8cdd-1e4e2813528a","Concrete Soap Neural","2021-04-09T12:03:23.835Z","2021-04-09T12:03:23.835Z"`, ], "data.csv", { type: "text/csv" }, ); const hiddenFileInput = container.querySelector('input[type="file"]'); const files = { files: [file] } as unknown as EventTarget; // TODO: töbe töbe await act(async () => { Simulate.change(hiddenFileInput as Element, { target: files, }); }); expect(parseMock).toHaveBeenCalled(); }); });