import { fireEvent, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { createTestTable } from "./utils/testData"; describe("BulkEditor hooks", () => { describe("undo", () => { it("should undo changes when cmd+z is pressed", async () => { const { render, getRows } = createTestTable(); render(); userEvent.dblClick(await screen.findByText("a1.1")); userEvent.keyboard("edited{Enter}"); expect(getRows()[1].subRows[1].data[0]).toBe("a1.1edited"); fireEvent.keyDown(document, { ctrlKey: true, shiftKey: false, key: "z", }); expect(getRows()[1].subRows[1].data[0]).toBe("a1.1"); }); it("should redo changes when cmd+shift+z is pressed", async () => { const { render, getRows } = createTestTable(); render(); userEvent.dblClick(await screen.findByText("a1.1")); userEvent.keyboard("edited{Enter}"); expect(getRows()[1].subRows[1].data[0]).toBe("a1.1edited"); fireEvent.keyDown(document, { ctrlKey: true, shiftKey: false, key: "z", }); expect(getRows()[1].subRows[1].data[0]).toBe("a1.1"); fireEvent.keyDown(document, { ctrlKey: true, shiftKey: true, key: "z", }); expect(getRows()[1].subRows[1].data[0]).toBe("a1.1edited"); }); it("should undo pasted changes when cmd+z is pressed", async () => { const { getRows, render } = createTestTable(); render(); fireEvent.mouseDown(await screen.findByText("b0.2")); userEvent.hover(screen.getByText("e1.2")); fireEvent.mouseUp(screen.getByText("e1.2")); const pasteEvent = { clipboardData: { getData: () => "p1\tq1\np2\tq2", }, }; fireEvent.paste(document, pasteEvent); expect(getRows()[0].subRows).toEqual([ { key: "0", data: ["a0.0", "b0.0", "c0.0", "d0.0", "e0.0", "f0.0"] }, { key: "1", data: ["a0.1", "b0.1", "c0.1", "d0.1", "e0.1", "f0.1"] }, { key: "2", data: ["a0.2", "p1", "q1", "p1", "q1", "f0.2"] }, ]); expect(getRows()[1].subRows).toEqual([ { key: "0", data: ["a1.0", "p2", "q2", "p2", "q2", "f1.0"] }, { key: "1", data: ["a1.1", "p1", "q1", "p1", "q1", "f1.1"] }, { key: "2", data: ["a1.2", "p2", "q2", "p2", "q2", "f1.2"] }, ]); fireEvent.keyDown(document, { ctrlKey: true, shiftKey: false, key: "z", }); expect(getRows()[0].subRows).toEqual([ { key: "0", data: ["a0.0", "b0.0", "c0.0", "d0.0", "e0.0", "f0.0"] }, { key: "1", data: ["a0.1", "b0.1", "c0.1", "d0.1", "e0.1", "f0.1"] }, { key: "2", data: ["a0.2", "b0.2", "c0.2", "d0.2", "e0.2", "f0.2"] }, ]); expect(getRows()[1].subRows).toEqual([ { key: "0", data: ["a1.0", "b1.0", "c1.0", "d1.0", "e1.0", "f1.0"] }, { key: "1", data: ["a1.1", "b1.1", "c1.1", "d1.1", "e1.1", "f1.1"] }, { key: "2", data: ["a1.2", "b1.2", "c1.2", "d1.2", "e1.2", "f1.2"] }, ]); }); }); });