UNPKG

react-konva-grid

Version:

Declarative React Canvas Grid primitive for Data table, Pivot table, Excel Worksheets

63 lines (53 loc) 1.73 kB
import { renderHook, act } from "@testing-library/react-hooks"; import useUndo, { createPatches } from "./../hooks/useUndo"; describe("useUndo", () => { it("is a function", () => { expect(typeof useUndo).toBe("function"); }); it("initializes with falsy canUndo and canRedo", () => { const { result } = renderHook(() => useUndo()); expect(result.current.canRedo).toBeFalsy; expect(result.current.canUndo).toBeFalsy; }); it("can add add to stack", () => { const { result } = renderHook(() => useUndo({})); const patch = createPatches(["activeCell", 1], 0, null); act(() => { result.current.add(patch); }); expect(result.current.canUndo).toBeTruthy(); }); it("can add undo and redo", () => { const { result } = renderHook(() => useUndo({})); const patch = createPatches(["activeCell", 1], 0, null); act(() => { result.current.add(patch); }); expect(result.current.canUndo).toBeTruthy(); act(() => { result.current.undo(); }); expect(result.current.canUndo).toBeFalsy(); expect(result.current.canRedo).toBeTruthy(); }); it("calls onundo and onredo", () => { const onUndo = jest.fn(); const onRedo = jest.fn(); const { result } = renderHook(() => useUndo({ onUndo, onRedo })); const patch = createPatches(["activeCell", 1], 0, null); act(() => { result.current.add(patch); }); expect(result.current.canUndo).toBeTruthy(); act(() => { result.current.undo(); }); expect(onUndo).toBeCalled(); expect(onUndo).toBeCalledTimes(1); act(() => { result.current.redo(); }); expect(onRedo).toBeCalled(); expect(onRedo).toBeCalledTimes(1); }); });