diff --git a/src/resources/reports.test.tsx b/src/resources/reports.test.tsx new file mode 100644 index 0000000..4f4cce0 --- /dev/null +++ b/src/resources/reports.test.tsx @@ -0,0 +1,41 @@ +import { render, screen } from "@testing-library/react"; + +const { mockedDataTableCol, mockedDataTableNumberCol } = vi.hoisted(() => ({ + mockedDataTableCol: vi.fn(({ source }: { source: string }) => {source}), + mockedDataTableNumberCol: vi.fn(({ source }: { source: string }) => ( + {source} + )), +})); + +vi.mock("react-admin", async importOriginal => { + const actual = await importOriginal(); + + const mockedDataTable = Object.assign( + ({ children }: { children: React.ReactNode }) =>
{children}
, + { + Col: mockedDataTableCol, + NumberCol: mockedDataTableNumberCol, + } + ); + + return { + ...actual, + List: ({ children }: { children: React.ReactNode }) =>
{children}
, + DataTable: mockedDataTable, + }; +}); + +import { ReportList } from "./reports"; + +describe("ReportList", () => { + it("uses DataTable columns for the report overview", () => { + render(); + + expect(screen.getByTestId("data-table")).toBeTruthy(); + expect(mockedDataTableCol).toHaveBeenCalledWith(expect.objectContaining({ source: "id" }), undefined); + expect(mockedDataTableCol).toHaveBeenCalledWith(expect.objectContaining({ source: "received_ts" }), undefined); + expect(mockedDataTableCol).toHaveBeenCalledWith(expect.objectContaining({ source: "user_id" }), undefined); + expect(mockedDataTableCol).toHaveBeenCalledWith(expect.objectContaining({ source: "name" }), undefined); + expect(mockedDataTableNumberCol).toHaveBeenCalledWith(expect.objectContaining({ source: "score" }), undefined); + }); +}); diff --git a/src/resources/reports.tsx b/src/resources/reports.tsx index b092971..f3cc077 100644 --- a/src/resources/reports.tsx +++ b/src/resources/reports.tsx @@ -92,12 +92,10 @@ export const ReportList = (props: ListProps) => ( } sort={{ field: "received_ts", order: "DESC" }}> - - - + + - );