Files
TJWaterFrontend_Refine/src/components/olmap/HealthRiskAnalysis/HealthRiskReport.test.tsx
T

85 lines
2.3 KiB
TypeScript

import { fireEvent, render, screen } from "@testing-library/react";
import HealthRiskReport from "./HealthRiskReport";
import { PredictionResult } from "./types";
jest.mock("echarts-for-react", () => ({
__esModule: true,
default: () => <div data-testid="report-chart" />,
}));
const predictionResults: PredictionResult[] = [
{
link_id: "PIPE-007",
survival_function: {
x: [4, 5],
y: [0.2, 0.15],
a: 0,
b: 0,
},
},
{
link_id: "PIPE-021",
survival_function: {
x: [4, 5],
y: [0.8, 0.7],
a: 0,
b: 0,
},
},
];
describe("HealthRiskReport", () => {
it("renders automatic report identity and priority results", () => {
render(
<HealthRiskReport
open
onClose={jest.fn()}
predictionResults={predictionResults}
currentYear={4}
analysisQueryTime="2026-07-30T01:02:03.000Z"
networkName="fengyang"
generatedAt={new Date("2026-07-30T03:04:05.000Z")}
/>,
);
expect(
screen.getByRole("heading", { name: "管网健康风险体检报告" }),
).toBeInTheDocument();
expect(screen.getByText("fengyang")).toBeInTheDocument();
expect(screen.getByText("第 4 年")).toBeInTheDocument();
expect(screen.getByText("PIPE-007")).toBeInTheDocument();
expect(screen.getAllByTestId("report-chart")).toHaveLength(2);
});
it("prints the report and restores document state after printing", () => {
const originalTitle = document.title;
const print = jest
.spyOn(window, "print")
.mockImplementation(() => undefined);
render(
<HealthRiskReport
open
onClose={jest.fn()}
predictionResults={predictionResults}
currentYear={4}
analysisQueryTime="2026-07-30T01:02:03.000Z"
networkName="fengyang"
generatedAt={new Date("2026-07-30T03:04:05.000Z")}
/>,
);
fireEvent.click(screen.getByRole("button", { name: "打印" }));
expect(print).toHaveBeenCalledTimes(1);
expect(document.body).toHaveClass("health-risk-report-printing");
expect(document.title).toContain("管网健康风险体检报告-fengyang");
window.dispatchEvent(new Event("afterprint"));
expect(document.body).not.toHaveClass("health-risk-report-printing");
expect(document.title).toBe(originalTitle);
print.mockRestore();
});
});