25 lines
861 B
TypeScript
25 lines
861 B
TypeScript
import { readFile } from "node:fs/promises";
|
|
import { fileURLToPath } from "node:url";
|
|
import { describe, expect, it } from "vitest";
|
|
import { z } from "zod";
|
|
|
|
import { PRODUCT_IDENTITY } from "../src/identity.js";
|
|
|
|
describe("package identity", () => {
|
|
it("keeps the manifest, executable, and floating MCP command aligned", async () => {
|
|
const packageJson = z
|
|
.object({ name: z.string(), bin: z.record(z.string(), z.string()) })
|
|
.parse(
|
|
JSON.parse(
|
|
await readFile(
|
|
fileURLToPath(new URL("../package.json", import.meta.url)),
|
|
"utf8",
|
|
),
|
|
),
|
|
);
|
|
expect(packageJson.name).toBe(PRODUCT_IDENTITY.packageName);
|
|
expect(Object.keys(packageJson.bin)).toEqual([PRODUCT_IDENTITY.cliBinary]);
|
|
expect(PRODUCT_IDENTITY.mcpCommand).toBe(`npx -y ${packageJson.name} mcp`);
|
|
});
|
|
});
|