testManifestsSayHostAndRoles

tcmts.cli.roles.test.testManifestsSayHostAndRoles · #kabjylpf · term

A manifest says the host protocol its code speaks and its definitions' roles, from those tcm has: anything else is refused, saying what it can be.

import { validate } from "#codebase/tcmts/cli/manifests";
import assert from "node:assert/strict";

export const testManifestsSayHostAndRoles = () => {
  const m = validate(
    "ui.manifest",
    { name: "ui", host: 1, roles: { Sheet: "stylesheet" } },
    undefined,
  );
  assert.equal(m.host, 1);
  assert.deepEqual(m.roles, { Sheet: "stylesheet" });
  const plain = validate("geo.manifest", { name: "geo" }, undefined);
  assert.equal("host" in plain || "roles" in plain, false);
  assert.throws(
    () => validate("ui.manifest", { name: "ui", roles: { Sheet: "router" } }, undefined),
    /ui\.manifest: `roles\.Sheet` must be one of tcm's roles \(stylesheet, table, every\)/,
  );
  assert.throws(
    () => validate("ui.manifest", { name: "ui", host: "1" }, undefined),
    /`host` is the version of tcm's host protocol its code speaks/,
  );
}

uses