import { describe, expect, it } from "vitest"; import { matchesNode } from "@/lib/flow"; import type { FlowNodeRecord } from "@/lib/types"; const node: FlowNodeRecord = { id: "root-delivery:artifact", node_type: "artifact", phase: "phase-3", lane: "root-delivery", title: "RootDeliveryManifest", subtitle: "唯一冻结 Manifest", status: "frozen", agent_role: "worker", task_kind: "root-delivery", sequence: 1, x: 0, y: 0, width: 268, tags: ["sha256"], metrics: [], record: { model_name: "RootDeliveryManifestV1", schema_version: "root-delivery-manifest/v1", payload: {} }, }; describe("matchesNode", () => { it("searches business labels, exact task kinds and schema model names", () => { expect(matchesNode(node, "Manifest")).toBe(true); expect(matchesNode(node, "root-delivery")).toBe(true); expect(matchesNode(node, "sha256")).toBe(true); expect(matchesNode(node, "mysql grant")).toBe(false); }); it("keeps all nodes when query is blank", () => expect(matchesNode(node, " ")).toBe(true)); });