Thing/tools/eveunity/eveunity-release-contract.test.mjs
2026-07-09 10:51:44 +01:00

37 lines
1.9 KiB
JavaScript

import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import test from "node:test";
import { buildUnityReleaseRequest } from "./eveunity-release-contract.mjs";
const capabilityManifest = JSON.parse(readFileSync(new URL("../../packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json", import.meta.url), "utf8"));
const packageManifest = JSON.parse(readFileSync(new URL("../../packages/org.gamecult.eve.unity-uitoolkit/package.json", import.meta.url), "utf8"));
test("builds EveUnity UPM release request from package manifest", () => {
const request = buildUnityReleaseRequest({
capabilityManifest,
packageManifest,
capabilityManifestPath: "packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json",
packageManifestPath: "packages/org.gamecult.eve.unity-uitoolkit/package.json",
});
assert.equal(request.schema, "gamecult.eve.runtime_release_request.v1");
assert.equal(request.ownerRepo, "EveUnity");
assert.equal(request.repository, "GameCult/EveUnity");
assert.equal(request.packageName, "org.gamecult.eve.unity-uitoolkit");
assert.equal(request.version, "0.1.0");
assert.equal(request.packageRoot, "packages/org.gamecult.eve.unity-uitoolkit");
assert.equal(request.versionSource, "packages/org.gamecult.eve.unity-uitoolkit/package.json");
assert.equal(request.tagName, "eveunity-uitoolkit-v0.1.0");
assert.equal(request.artifactKind, "upm-package");
assert.equal(request.artifactPath, "artifacts/eveunity-uitoolkit-release/0.1.0/org.gamecult.eve.unity-uitoolkit-0.1.0.tgz");
assert.equal(request.dependencies["org.gamecult.eve.surface"], "0.1.0");
});
test("rejects package manifests that do not match the release contract package", () => {
const wrongPackage = { ...packageManifest, name: "org.gamecult.eve.wrong" };
assert.throws(
() => buildUnityReleaseRequest({ capabilityManifest, packageManifest: wrongPackage }),
/package name mismatch/,
);
});