import { fireEvent, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { createTestTable } from "./utils/testData"; describe("BulkEditTable", () => { describe("copy/paste", () => { it("should copy the selected values", async () => { const { render } = createTestTable(); render(); fireEvent.mouseDown(await screen.findByText("a2")); userEvent.hover(screen.getByText("c4")); fireEvent.mouseUp(screen.getByText("c4")); const copyEvent = { clipboardData: { setData: jest.fn(), }, }; fireEvent.copy(document, copyEvent); expect(copyEvent.clipboardData.setData).toHaveBeenCalledTimes(1); expect(copyEvent.clipboardData.setData).toHaveBeenCalledWith( "text/plain", "a2\tb2\tc2\na3\tb3\tc3\na4\tb4\tc4" ); }); it("should paste the clipboard data", async () => { const { getRows, render } = createTestTable(); render(); fireEvent.mouseDown(await screen.findByText("b2")); userEvent.hover(screen.getByText("e5")); fireEvent.mouseUp(screen.getByText("e5")); const pasteEvent = { clipboardData: { getData: () => "p1\tq1\np2\tq2", }, }; fireEvent.paste(document, pasteEvent); expect(getRows()).toEqual([ { key: "row0", data: ["a0", "b0", "c0", "d0", "e0", "f0"] }, { key: "row1", data: ["a1", "b1", "c1", "d1", "e1", "f1"] }, { key: "row2", data: ["a2", "p1", "q1", "p1", "q1", "f2"] }, { key: "row3", data: ["a3", "p2", "q2", "p2", "q2", "f3"] }, { key: "row4", data: ["a4", "p1", "q1", "p1", "q1", "f4"] }, { key: "row5", data: ["a5", "p2", "q2", "p2", "q2", "f5"] }, ]); }); }); });