import { describe, expect, it } from "vitest"; import { findReusableDeliveryPullRequest } from "../src/integrations/gitea/policy.js"; import type { GiteaPullRequest } from "../src/integrations/gitea/types.js"; const head = "a".repeat(40); const merged: GiteaPullRequest = { id: 31, number: 31, title: "M18 evidence", state: "closed", merged: true, html_url: "https://example.test/pulls/31", created_at: "2026-09-07T00:00:00Z", updated_at: "2026-09-08T00:00:00Z", merge_commit_sha: "b".repeat(40), head: { ref: "chatgpt/evidence", sha: head }, base: { ref: "main", sha: "b".repeat(40) }, }; const select = (prs: GiteaPullRequest[]) => findReusableDeliveryPullRequest(prs, "chatgpt/evidence", "main", head); describe("existing delivery PR reconciliation", () => { it("adopts the exact already-merged PR instead of opening an empty replacement", () => { expect(select([merged])).toBe(merged); }); it("reuses an exact open review", () => { const open = { ...merged, merged: false, state: "open", merge_commit_sha: undefined }; expect(select([open])).toBe(open); }); it.each([ { ...merged, head: { ...merged.head, sha: "c".repeat(40) } }, { ...merged, head: { ...merged.head, ref: "chatgpt/other" } }, { ...merged, base: { ...merged.base, ref: "other" } }, { ...merged, merged: false }, ])("does not adopt stale, foreign or abandoned reviews", (pr) => { expect(select([pr])).toBeUndefined(); }); it("rejects ambiguous matching reviews", () => { expect(() => select([merged, { ...merged, id: 32, number: 32 }])).toThrow("AMBIGUOUS"); }); it("requires actual merge commit evidence", () => { expect(() => select([{ ...merged, merge_commit_sha: undefined }])).toThrow("MERGE_EVIDENCE_REQUIRED"); }); });