Add bounded public member inspection through shared query scopes
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { test } from "node:test";
|
||||
import { loadReaderWorkspace } from "./reader-fixture.js";
|
||||
import { compileExecutionPlan, compileQueryProgram } from "../src/execution-world/index.js";
|
||||
import { compileInspectionTemplates } from "../src/execution-world/inspection.js";
|
||||
test("public member inspection installs a finite set of typed lazy templates", async () => {
|
||||
const plan = compileExecutionPlan(await loadReaderWorkspace());
|
||||
const result = compileInspectionTemplates(plan);
|
||||
assert.ok(result.templates.length);
|
||||
const document = result.templates.find(
|
||||
(template) =>
|
||||
template.members.some((member) => member.name === "content") &&
|
||||
template.members.some((member) => member.name === "highlights"),
|
||||
)!;
|
||||
assert.ok(document.inputs && document.view && document.server);
|
||||
assert.equal(document.view.sourceQuery, document.inputs.query);
|
||||
assert.ok(document.members.find((member) => member.name === "highlights")?.many);
|
||||
assert.ok(!document.members.some((member) => member.name === "revise"));
|
||||
const compiled = compileQueryProgram(plan) as {
|
||||
queries: { id: string; selection: { selection: { conditions: unknown[] }[] }[] }[];
|
||||
};
|
||||
for (const descriptor of result.contracts) {
|
||||
const query = compiled.queries.find(
|
||||
(query) => query.id === JSON.stringify([descriptor.package, descriptor.query]),
|
||||
)!;
|
||||
assert.ok(query);
|
||||
assert.ok(
|
||||
query.selection[0]!.selection.every((field) => field.conditions.length === 1),
|
||||
"Each field admission is independently selected",
|
||||
);
|
||||
}
|
||||
assert.ok(!JSON.stringify(result.templates).includes("slot:"));
|
||||
assert.equal(result.queries.length, result.contracts.length);
|
||||
assert.ok(result.queries.length <= plan.definition.workspace.interfaceImports.length * 3);
|
||||
});
|
||||
Reference in New Issue
Block a user