fix: synchronize dynamic GeoServer layer lifecycle
Optional sources became dynamic while dependent labels and controller state remained static, allowing stale requests to restore removed layers. Register dependent layers through the same lifecycle and invalidate target request generations before release.
This commit is contained in:
@@ -61,10 +61,38 @@ test("shows data-dependent layer controls only when GeoServer reports features",
|
||||
await expect(page.getByRole("button", { name: /^水箱/ })).toBeVisible();
|
||||
await expect.poll(() => page.evaluate(() => ({
|
||||
valve: Boolean(globalThis.__waterNetworkMap?.getLayer("valves-symbol")),
|
||||
valveLabel: Boolean(globalThis.__waterNetworkMap?.getLayer("workbench-value-label-valves")),
|
||||
reservoir: Boolean(globalThis.__waterNetworkMap?.getLayer("reservoirs-symbol")),
|
||||
reservoirLabel: Boolean(globalThis.__waterNetworkMap?.getLayer("workbench-value-label-reservoirs")),
|
||||
pump: Boolean(globalThis.__waterNetworkMap?.getLayer("pumps-symbol")),
|
||||
tank: Boolean(globalThis.__waterNetworkMap?.getLayer("tanks-symbol"))
|
||||
}))).toEqual({ valve: true, reservoir: true, pump: true, tank: true });
|
||||
}))).toEqual({
|
||||
valve: true,
|
||||
valveLabel: true,
|
||||
reservoir: true,
|
||||
reservoirLabel: true,
|
||||
pump: true,
|
||||
tank: true
|
||||
});
|
||||
await expect.poll(() => page.evaluate(() => {
|
||||
const layerIds = globalThis.__waterNetworkMap?.getStyle().layers.map((layer) => layer.id) ?? [];
|
||||
return {
|
||||
valveLabel: layerIds.indexOf("workbench-value-label-valves"),
|
||||
simulationLabel: layerIds.indexOf("simulation-burst-label")
|
||||
};
|
||||
})).toMatchObject({
|
||||
valveLabel: expect.any(Number),
|
||||
simulationLabel: expect.any(Number)
|
||||
});
|
||||
const layerOrder = await page.evaluate(() => {
|
||||
const layerIds = globalThis.__waterNetworkMap?.getStyle().layers.map((layer) => layer.id) ?? [];
|
||||
return [
|
||||
layerIds.indexOf("workbench-value-label-valves"),
|
||||
layerIds.indexOf("simulation-burst-label")
|
||||
];
|
||||
});
|
||||
expect(layerOrder[0]).toBeGreaterThanOrEqual(0);
|
||||
expect(layerOrder[0]).toBeLessThan(layerOrder[1]);
|
||||
});
|
||||
|
||||
test("loads required map layers while optional layer probes are still pending", async ({ page }) => {
|
||||
|
||||
Reference in New Issue
Block a user