79 lines
4 KiB
JavaScript
79 lines
4 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"));
|
|
const sceneCapabilityManifest = JSON.parse(readFileSync(new URL("../../runtimes/incubating/eve-unity-scene/eve-runtime-capability.json", import.meta.url), "utf8"));
|
|
const scenePackageManifest = JSON.parse(readFileSync(new URL("../../runtimes/incubating/eve-unity-scene/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");
|
|
assert.deepEqual(request.requiredPackageDependencies, [
|
|
{
|
|
packageName: "org.gamecult.eve.surface",
|
|
version: "0.1.0",
|
|
packageManager: "upm",
|
|
ownerRepo: "Eve",
|
|
purpose: "Shared Unity DTOs for gamecult.eve.surface.v1 documents.",
|
|
},
|
|
]);
|
|
});
|
|
|
|
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/,
|
|
);
|
|
});
|
|
|
|
test("rejects package manifests missing required UPM dependencies", () => {
|
|
const missingDependencyPackage = { ...packageManifest, dependencies: {} };
|
|
|
|
assert.throws(
|
|
() => buildUnityReleaseRequest({ capabilityManifest, packageManifest: missingDependencyPackage }),
|
|
/must depend on org\.gamecult\.eve\.surface/,
|
|
);
|
|
});
|
|
|
|
test("builds EveUnity scene UPM release request from package manifest", () => {
|
|
const request = buildUnityReleaseRequest({
|
|
capabilityManifest: sceneCapabilityManifest,
|
|
packageManifest: scenePackageManifest,
|
|
capabilityManifestPath: "runtimes/incubating/eve-unity-scene/eve-runtime-capability.json",
|
|
packageManifestPath: "runtimes/incubating/eve-unity-scene/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-scene");
|
|
assert.equal(request.version, "0.1.0");
|
|
assert.equal(request.packageRoot, "runtimes/incubating/eve-unity-scene");
|
|
assert.equal(request.versionSource, "runtimes/incubating/eve-unity-scene/package.json");
|
|
assert.equal(request.tagName, "eveunity-scene-v0.1.0");
|
|
assert.equal(request.artifactKind, "upm-package");
|
|
assert.equal(request.artifactPath, "artifacts/eveunity-scene-release/0.1.0/org.gamecult.eve.unity-scene-0.1.0.tgz");
|
|
assert.equal(request.dependencies["org.gamecult.eve.surface"], "0.1.0");
|
|
assert.equal(request.requiredPackageDependencies[0].ownerRepo, "Eve");
|
|
});
|