feat(sensor): 完善监测点结果编辑与图层切换
This commit is contained in:
+46
-3
@@ -1,5 +1,6 @@
|
||||
import { act, fireEvent, render, screen } from "@testing-library/react";
|
||||
import MonitoringPlaceOptimizationPanel, {
|
||||
getMonitoringLayerVisibility,
|
||||
getTabIndicatorSx,
|
||||
getTabIndicatorTransform,
|
||||
} from "./MonitoringPlaceOptimizationPanel";
|
||||
@@ -7,6 +8,7 @@ import { getSensorPlacementScheme } from "./schemeApi";
|
||||
import type { SensorPlacementScheme } from "./types";
|
||||
|
||||
const mockSchemeEditorRender = jest.fn();
|
||||
const mockSchemeQueryRender = jest.fn();
|
||||
|
||||
jest.mock("@refinedev/core", () => ({
|
||||
useNotification: () => ({ open: jest.fn() }),
|
||||
@@ -20,9 +22,16 @@ jest.mock("./OptimizationParameters", () => ({
|
||||
|
||||
jest.mock("./SchemeQuery", () => ({
|
||||
__esModule: true,
|
||||
default: ({ onEdit }: { onEdit: (schemeId: number) => void }) => (
|
||||
<button onClick={() => onEdit(7)}>打开测试方案</button>
|
||||
),
|
||||
default: ({
|
||||
onEdit,
|
||||
active,
|
||||
}: {
|
||||
onEdit: (schemeId: number) => void;
|
||||
active?: boolean;
|
||||
}) => {
|
||||
mockSchemeQueryRender(active);
|
||||
return <button onClick={() => onEdit(7)}>打开测试方案</button>;
|
||||
},
|
||||
createMonitoringSchemeQueryState: () => ({}),
|
||||
}));
|
||||
|
||||
@@ -66,6 +75,7 @@ const scheme: SensorPlacementScheme = {
|
||||
describe("MonitoringPlaceOptimizationPanel", () => {
|
||||
beforeEach(() => {
|
||||
mockSchemeEditorRender.mockClear();
|
||||
mockSchemeQueryRender.mockClear();
|
||||
});
|
||||
|
||||
it("applies equal-width positioning to the rendered tab indicator", () => {
|
||||
@@ -90,6 +100,21 @@ describe("MonitoringPlaceOptimizationPanel", () => {
|
||||
expect(indicator).toHaveStyle({ transform: "translateX(200%)" });
|
||||
});
|
||||
|
||||
it("keeps query and editor layers mutually exclusive by active tab", () => {
|
||||
expect(getMonitoringLayerVisibility(0)).toEqual({
|
||||
editor: false,
|
||||
query: false,
|
||||
});
|
||||
expect(getMonitoringLayerVisibility(1)).toEqual({
|
||||
editor: true,
|
||||
query: false,
|
||||
});
|
||||
expect(getMonitoringLayerVisibility(2)).toEqual({
|
||||
editor: false,
|
||||
query: true,
|
||||
});
|
||||
});
|
||||
|
||||
it("prepares a queried scheme before switching to the result editor", async () => {
|
||||
let resolveScheme: (value: SensorPlacementScheme) => void = () => {};
|
||||
mockGetSensorPlacementScheme.mockReturnValue(
|
||||
@@ -119,5 +144,23 @@ describe("MonitoringPlaceOptimizationPanel", () => {
|
||||
false,
|
||||
true,
|
||||
]);
|
||||
expect(mockSchemeQueryRender.mock.calls.at(-1)?.[0]).toBe(false);
|
||||
});
|
||||
|
||||
it("keeps the active result layer visible when the panel is collapsed", async () => {
|
||||
mockGetSensorPlacementScheme.mockResolvedValue(scheme);
|
||||
render(<MonitoringPlaceOptimizationPanel />);
|
||||
|
||||
fireEvent.click(screen.getByRole("tab", { name: /方案查询/ }));
|
||||
fireEvent.click(screen.getByRole("button", { name: "打开测试方案" }));
|
||||
await screen.findByTestId("scheme-editor");
|
||||
|
||||
const collapseButton = screen
|
||||
.getByTestId("ChevronRightIcon")
|
||||
.closest("button");
|
||||
expect(collapseButton).not.toBeNull();
|
||||
fireEvent.click(collapseButton!);
|
||||
|
||||
expect(mockSchemeEditorRender.mock.calls.at(-1)?.[0]).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user