Files
beacon-web/tests/features/map/useMapBordersData.refresh.test.tsx
T
n30nex d259be512e feat: observer monitoring, retained evidence and channel scopes (#75-#99)
Lands the stacked web PRs #75, #79, #80, #81, #83, #85, #87, #89, #92, #95 and #99 in one squash. Server counterparts #166-#176 are merged. Remaining review items follow in a fix PR.
2026-09-30 08:03:13 -04:00

30 lines
1.4 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { renderHook } from "@testing-library/react";
import { useMapBordersData } from "../../../src/features/map/useMapBordersData";
import type { IataBorder } from "../../../src/api/client";
const state = vi.hoisted(() => ({ data: null as IataBorder | null, updated: 0 }));
vi.mock("@tanstack/react-query", () => ({ useQueries: () => [{ data: state.data, dataUpdatedAt: state.updated }] }));
const border = (lng: number): IataBorder => ({ type: "Feature", properties: {}, geometry: { type: "Polygon", coordinates: [[[lng, 0], [lng + 1, 0], [lng + 1, 1], [lng, 0]]] } });
describe("border refresh", () => {
it("replaces an already-loaded polygon when its query refreshes", () => {
state.data = border(0); state.updated = 1;
const { result, rerender } = renderHook(() => useMapBordersData(["YKF"], true));
const previous = result.current;
state.data = border(5); state.updated = 2;
rerender();
expect(result.current).not.toBe(previous);
expect(result.current.features[0]?.geometry).toEqual(border(5).geometry);
});
it("adds a configured border after an earlier empty response", () => {
state.data = null; state.updated = 3;
const { result, rerender } = renderHook(() => useMapBordersData(["YOW"], true));
expect(result.current.features).toHaveLength(0);
state.data = border(10); state.updated = 4;
rerender();
expect(result.current.features).toHaveLength(1);
});
});