rea/src/domain/webBundleAnalyzerAst.test.ts

28 lines
1.2 KiB
TypeScript

import * as t from "@babel/types";
import { expect, it } from "vitest";
import { parseJavaScriptSource } from "./javascript/javascriptSourceParser.js";
import { objectString } from "./webBundleAnalyzerAst.js";
it("reads WebMCP declaration strings through the exact-literal owner", () => {
const file = parseJavaScriptSource(
"const declaration = { name: `catalog`, description: `Browse catalog` }; const dynamic = { name: `catalog ${scope}` };",
);
const declaration = file?.program.body[0];
if (!t.isVariableDeclaration(declaration))
throw new Error("Expected declaration fixture");
const object = declaration.declarations[0]?.init;
if (!t.isObjectExpression(object))
throw new Error("Expected object expression fixture");
const dynamicDeclaration = file?.program.body[1];
if (!t.isVariableDeclaration(dynamicDeclaration))
throw new Error("Expected dynamic declaration fixture");
const dynamic = dynamicDeclaration.declarations[0]?.init;
if (!t.isObjectExpression(dynamic))
throw new Error("Expected dynamic object expression fixture");
expect(objectString(object, "name")).toBe("catalog");
expect(objectString(object, "description")).toBe("Browse catalog");
expect(objectString(dynamic, "name")).toBeUndefined();
});