Use explicit navigation projections for React presentation readiness (#339)
This commit is contained in:
parent
bc9a7ef2cf
commit
ee84025322
@@ -520,7 +520,7 @@ test("React tooling generates checked owner queries from imported closed navigat
|
||||
if (parsed.resource.kind !== "package") throw Error("package required");
|
||||
const contracts = [...dependencies, ...(parsed.resource.specializations ?? [])];
|
||||
const documents = presentationQueries(parsed.resource.revision, contracts);
|
||||
assert.equal(documents.size, 2);
|
||||
assert.equal(documents.size, 4);
|
||||
const checked = await Promise.all(
|
||||
parsed.resource.revision.queries!.map((query) =>
|
||||
compileQuery(query, contracts, async (name) => documents.get(name)!),
|
||||
@@ -528,10 +528,16 @@ test("React tooling generates checked owner queries from imported closed navigat
|
||||
);
|
||||
assert.deepEqual(
|
||||
checked.map((query) => query.declaration.placement?.kind),
|
||||
["replica", "local"],
|
||||
["replica", "local", "replica", "local"],
|
||||
);
|
||||
assert.match(JSON.stringify(checked[0]!.output), /"custom":\{"kind":"record","fields":\{"label"/);
|
||||
assert.match(JSON.stringify(checked[0]!.selection), /"kind":"as"/);
|
||||
for (const identity of checked.slice(2)) {
|
||||
assert.match(identity.declaration.id, /:identity-(inputs|view)$/);
|
||||
assert.doesNotMatch(JSON.stringify(identity.output), /"custom"/);
|
||||
assert.match(JSON.stringify(identity.output), /_presentationOccurrence/);
|
||||
assert.match(JSON.stringify(identity.output), /_presentationSource/);
|
||||
}
|
||||
assert(
|
||||
checked.every((query) =>
|
||||
query.effects.some((effect) => effect.memberId === "mount" && effect.uses.includes("predicate")),
|
||||
|
||||
Reference in New Issue
Block a user