import React, { ReactNode } from "react";
import { Button } from "antd";
import { Route } from "react-router-dom";
import { render, TestWrapper, MockJSONServer } from "@test";
import { Create } from "./";
const renderCreate = (create: ReactNode) => {
return render({create}, {
wrapper: TestWrapper({
dataProvider: MockJSONServer,
resources: [{ name: "posts", route: "posts" }],
routerInitialEntries: ["/posts/create"],
}),
});
};
describe("Create", () => {
it("should render page successfuly", async () => {
const { container } = renderCreate();
expect(container).toBeTruthy();
});
it("should render default save button successfuly", async () => {
const { container, getByText } = renderCreate();
expect(container.querySelector("button")).toBeTruthy();
getByText("Save");
});
it("should render optional button with actionButtons prop", async () => {
const { container, getByText } = renderCreate(
Optional Button} />,
);
expect(container.querySelector("button")).toBeTruthy();
getByText("Optional Button");
});
it("should render default title successfuly", async () => {
const { getByText } = renderCreate();
getByText("Create Post");
});
it("should render with label instead of resource name successfully", () => {
const { getByText } = render(
,
{
wrapper: TestWrapper({
dataProvider: MockJSONServer,
resources: [
{ name: "posts", route: "posts", label: "test label" },
],
routerInitialEntries: ["/posts/create"],
}),
},
);
getByText("Create Test label");
});
it("should render optional title with title prop", async () => {
const { getByText } = renderCreate();
getByText("New Title");
});
it("should render optional resource with resource prop", () => {
const { getByText } = render(
,
{
wrapper: TestWrapper({
dataProvider: MockJSONServer,
resources: [{ name: "posts", route: "posts" }],
routerInitialEntries: ["/custom"],
}),
},
);
getByText("Create Post");
});
it("should render tags", () => {
const { getByText } = render(
,
{
wrapper: TestWrapper({
dataProvider: MockJSONServer,
resources: [{ name: "posts", route: "posts" }],
routerInitialEntries: ["/posts/create/1"],
}),
},
);
getByText("Create Post");
getByText("Clone");
});
});