From 9b88c0e307b7d6871250c9db3838c1186c43f1d3 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Tue, 9 Jun 2026 23:43:24 -0700 Subject: [PATCH] FN-6176: update workflow-definition-store tests for builtin PR fragment Adjust workflow-definition-store expectations to include the built-in PR fragment. - expect builtin:pr-workflow in fragment-filtered workflow definition results - allow built-in workflow entries to be either workflow or fragment kinds - verify fragment filtering and cache regression coverage include the PR lifecycle built-in Files changed: packages/core/src/__tests__/workflow-definition-store.test.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) Fusion-Task-Id: FN-6176 Fusion-Task-Lineage: fca73dec-060c-4935-9f03-67299d99983f --- .../__tests__/workflow-definition-store.test.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/core/src/__tests__/workflow-definition-store.test.ts b/packages/core/src/__tests__/workflow-definition-store.test.ts index 64860b46c2..b52a8e4686 100644 --- a/packages/core/src/__tests__/workflow-definition-store.test.ts +++ b/packages/core/src/__tests__/workflow-definition-store.test.ts @@ -227,18 +227,21 @@ describe("TaskStore workflow definitions (U1)", () => { await store.createWorkflowDefinition({ name: "W1", ir: makeIr() }); const frag = await store.createWorkflowDefinition({ name: "F1", ir: fragmentIr(), kind: "fragment" }); const fragments = await store.listWorkflowDefinitions({ kind: "fragment" }); - expect(fragments.map((w) => w.id)).toEqual([frag.id]); + expect(fragments.map((w) => w.id)).toEqual(["builtin:pr-workflow", frag.id]); expect(fragments.every((w) => w.kind === "fragment")).toBe(true); }); - it("built-in list entries are kind 'workflow'", async () => { + it("built-in list entries are kind 'workflow' or 'fragment'", async () => { const all = await store.listWorkflowDefinitions(); const builtins = all.filter((w) => isBuiltinWorkflowId(w.id)); expect(builtins.length).toBeGreaterThan(0); - expect(builtins.every((w) => w.kind === "workflow")).toBe(true); - // The workflow filter includes built-ins; the fragment filter excludes them. + const builtinKinds = builtins.map((w) => w.kind); + expect(builtinKinds.every((k) => k === "workflow" || k === "fragment")).toBe(true); + expect(builtinKinds.filter((k) => k === "fragment")).toEqual(["fragment"]); + // The workflow filter still includes non-fragment built-ins. expect((await store.listWorkflowDefinitions({ kind: "workflow" })).some((w) => isBuiltinWorkflowId(w.id))).toBe(true); - expect((await store.listWorkflowDefinitions({ kind: "fragment" })).some((w) => isBuiltinWorkflowId(w.id))).toBe(false); + // The fragment filter now includes the PR lifecycle built-in. + expect((await store.listWorkflowDefinitions({ kind: "fragment" })).some((w) => isBuiltinWorkflowId(w.id))).toBe(true); }); it("cache regression: filtered then unfiltered (and reverse) are both correct", async () => { @@ -247,7 +250,7 @@ describe("TaskStore workflow definitions (U1)", () => { // filtered → unfiltered const f1 = await store.listWorkflowDefinitions({ kind: "fragment" }); - expect(f1.map((w) => w.id)).toEqual([frag.id]); + expect(f1.map((w) => w.id)).toEqual(["builtin:pr-workflow", frag.id]); const allAfterFiltered = await store.listWorkflowDefinitions(); expect(allAfterFiltered.filter((w) => !isBuiltinWorkflowId(w.id)).map((w) => w.kind).sort()).toEqual([ "fragment", @@ -256,7 +259,7 @@ describe("TaskStore workflow definitions (U1)", () => { // unfiltered → filtered (cache already populated by the unfiltered call) const f2 = await store.listWorkflowDefinitions({ kind: "fragment" }); - expect(f2.map((w) => w.id)).toEqual([frag.id]); + expect(f2.map((w) => w.id)).toEqual(["builtin:pr-workflow", frag.id]); const w2 = await store.listWorkflowDefinitions({ kind: "workflow" }); expect(w2.filter((w) => !isBuiltinWorkflowId(w.id)).every((w) => w.kind === "workflow")).toBe(true); });