Farmbot-Web-App/frontend/__tests__/link_test.tsx

44 lines
1.3 KiB
TypeScript

jest.mock("takeme", () => ({ navigate: jest.fn() }));
import { clickHandler, Link } from "../link";
import * as React from "react";
import { navigate } from "takeme";
import { shallow } from "enzyme";
describe("clickHandler", () => {
function setupClickTest(to: string) {
const onClick = jest.fn();
const handler = clickHandler({ to, onClick });
type ClickEvent = React.MouseEvent<HTMLAnchorElement>;
const e: Partial<ClickEvent> = { preventDefault: jest.fn() };
return {
e: e as ClickEvent,
handler,
onClick
};
}
it("handles clicks", () => {
const { e, handler } = setupClickTest("/clean_path");
handler(e);
expect(e.preventDefault).toHaveBeenCalled();
expect(navigate).toHaveBeenCalledWith("/clean_path");
});
it("handles clicks, stripping out the `/app` part", () => {
const { e, handler } = setupClickTest("/app/foo/bar");
handler(e);
expect(e.preventDefault).toHaveBeenCalled();
expect(navigate).toHaveBeenCalledWith("/foo/bar");
});
});
describe("<Link/>", () => {
it("renders child elements", () => {
function Child(_: unknown) { return <p>Hey!</p>; }
const el = shallow(<Link to="/wherever"><Child /></Link>);
expect(el.html()).toContain("Hey!");
el.unmount();
});
});