78 lines
3.7 KiB
JavaScript
78 lines
3.7 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import test from "node:test";
|
|
import { buildTuiCaptureRequest } from "./evetui-capture-contract.mjs";
|
|
|
|
const advertisement = JSON.parse(readFileSync(new URL("../../../Aetheria/conformance/eve/aetheria.provider-advertisement.json", import.meta.url), "utf8"));
|
|
const worldSmokeAdvertisement = JSON.parse(readFileSync(new URL("../../../Eve/web/fixtures/eve-world-smoke.provider-advertisement.json", import.meta.url), "utf8"));
|
|
const capabilityManifest = JSON.parse(readFileSync(new URL("../../eve-runtime-capability.json", import.meta.url), "utf8"));
|
|
|
|
test("builds TUI capture request from provider advertisement", () => {
|
|
const request = buildTuiCaptureRequest({
|
|
advertisement,
|
|
capabilityManifest,
|
|
advertisementPath: "conformance/eve/aetheria.provider-advertisement.json",
|
|
capabilityManifestPath: "eve-runtime-capability.json",
|
|
stamp: "smoke",
|
|
});
|
|
|
|
assert.equal(request.schema, "gamecult.eve.runtime_capture_request.v1");
|
|
assert.equal(request.runtimeId, "tui");
|
|
assert.equal(request.ownerRepo, "EveTui");
|
|
assert.equal(request.providerId, "aetheria");
|
|
assert.equal(request.surfaceId, "aetheria.daemon.game");
|
|
assert.equal(request.targetId, "tui");
|
|
assert.equal(request.projectionKind, "provider-authored-world-surface");
|
|
assert.equal(request.commandBoundary, "aetheria.daemon.commands");
|
|
assert.equal(request.receiptSchema, "aetheria.eve_command_acceptance_status.v1");
|
|
assert.equal(request.captureKind, "terminal-cell-grid");
|
|
assert.equal(request.artifactKind, "json-grid");
|
|
assert.equal(request.artifactPath, "artifacts/evetui-capture/smoke/tui-grid.json");
|
|
assert.match(request.authority, /provider state/);
|
|
});
|
|
|
|
test("builds TUI capture request for Aetheria editor surface", () => {
|
|
const request = buildTuiCaptureRequest({
|
|
advertisement,
|
|
capabilityManifest,
|
|
captureSurfaceId: "aetheria.daemon.editor",
|
|
advertisementPath: "conformance/eve/aetheria.provider-advertisement.json",
|
|
capabilityManifestPath: "eve-runtime-capability.json",
|
|
stamp: "smoke",
|
|
});
|
|
|
|
assert.equal(request.runtimeId, "tui");
|
|
assert.equal(request.providerId, "aetheria");
|
|
assert.equal(request.surfaceId, "aetheria.daemon.editor");
|
|
assert.equal(request.surfaceKind, "interactive-world-editor");
|
|
assert.equal(request.projectionKind, "provider-authored-world-editor-surface");
|
|
assert.equal(request.commandBoundary, "aetheria.daemon.commands");
|
|
assert.equal(request.receiptSchema, "aetheria.eve_command_acceptance_status.v1");
|
|
});
|
|
|
|
test("builds TUI capture request from a declared generic world provider", () => {
|
|
const request = buildTuiCaptureRequest({
|
|
advertisement: worldSmokeAdvertisement,
|
|
capabilityManifest,
|
|
advertisementPath: "web/fixtures/eve-world-smoke.provider-advertisement.json",
|
|
capabilityManifestPath: "eve-runtime-capability.json",
|
|
stamp: "smoke",
|
|
});
|
|
|
|
assert.equal(request.runtimeId, "tui");
|
|
assert.equal(request.providerId, "eve.world-smoke");
|
|
assert.equal(request.surfaceId, "eve.world-smoke.surface");
|
|
assert.equal(request.commandBoundary, "eve.world-smoke.commands");
|
|
assert.equal(request.receiptSchema, "eve.world_smoke.command_receipt.v1");
|
|
});
|
|
|
|
test("rejects capture request when the surface does not advertise TUI", () => {
|
|
const withoutTarget = structuredClone(advertisement);
|
|
const surface = withoutTarget.surfaces.find(candidate => candidate.surfaceId === "aetheria.daemon.game");
|
|
surface.worldInteraction.loweringTargets = surface.worldInteraction.loweringTargets.filter(target => target !== "tui");
|
|
|
|
assert.throws(
|
|
() => buildTuiCaptureRequest({ advertisement: withoutTarget, capabilityManifest, stamp: "smoke" }),
|
|
/does not advertise lowering target tui/,
|
|
);
|
|
});
|