feat(map): add reference layers and stabilize workspace controls
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import test from "node:test";
|
||||
|
||||
const root = new URL("../", import.meta.url);
|
||||
|
||||
test("Map Page registers a provider-neutral reference-points slot and three station profiles", async () => {
|
||||
const pages = JSON.parse(await readFile(new URL("registry/pages.json", root), "utf8"));
|
||||
const profiles = JSON.parse(await readFile(new URL("registry/map-presentation-profiles.json", root), "utf8"));
|
||||
const mapPage = pages.templates.find((template) => template.id === "map");
|
||||
const stationProfiles = profiles.profiles.filter((profile) => profile.id.startsWith("map.reference.transport."));
|
||||
|
||||
assert.ok(mapPage.slots.some((slot) => slot.id === "reference-points" && slot.kind === "entity-stream"));
|
||||
assert.deepEqual(
|
||||
stationProfiles.map((profile) => profile.id).sort(),
|
||||
[
|
||||
"map.reference.transport.metro.v1",
|
||||
"map.reference.transport.railway-station.v1",
|
||||
"map.reference.transport.terminal.v1",
|
||||
],
|
||||
);
|
||||
assert.deepEqual(
|
||||
new Set(stationProfiles.flatMap((profile) => profile.semanticTypes)),
|
||||
new Set(["map.station", "map.terminal"]),
|
||||
);
|
||||
assert.ok(stationProfiles.every((profile) => profile.target.variant === "elevated-spike"));
|
||||
});
|
||||
|
||||
test("existing layouts upgrade reference layers on read and renderer accepts their slot", async () => {
|
||||
const server = await readFile(new URL("server/catalog-server.mjs", root), "utf8");
|
||||
const renderer = await readFile(new URL("apps/catalog/src/CesiumMapRenderer.tsx", root), "utf8");
|
||||
const runtime = await readFile(new URL("apps/catalog/src/useMapReferenceRuntime.ts", root), "utf8");
|
||||
|
||||
assert.match(server, /pageLayoutMatch\[1\] === "map" \? validateMapPageLayout\(stored\) : stored/);
|
||||
assert.match(server, /referenceLayers: structuredClone\(canonicalMapReferenceLayers\)/);
|
||||
assert.match(renderer, /binding\.slotId === "reference-points"/);
|
||||
assert.match(runtime, /\/api\/map-gateway\/api\/map\/reference-sources\/v1\/profiles\//);
|
||||
assert.match(runtime, /allowedAttributes = new Set\(\["name", "category", "network", "operator", "official_name", "local_name", "uic_ref", "wheelchair"\]\)/);
|
||||
assert.doesNotMatch(runtime, /credential|accessToken|providerEndpoint|rawPayload/);
|
||||
});
|
||||
Reference in New Issue
Block a user