/// import type { MergeRequestDetail, MergeRequestThreadEvent, } from "../src/lib/workspace/api/merge-requests.ts"; import { sourceReviewFreshness } from "../src/lib/workspace/merge-request-status.ts"; function assertEquals(actual: unknown, expected: unknown): void { if (actual !== expected) { throw new Error( `expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`, ); } } function event( kind: string, fields: Record, ): MergeRequestThreadEvent { return { kind, sequence: 1, at: "2026-09-01T00:00:00Z", ...fields }; } function detail(thread: MergeRequestThreadEvent[]): MergeRequestDetail { return { merge_request_id: "MR-1", workspace_id: "W", repository_id: "main", ticket_ids: ["T-1"], selector_from: "work/ticket", selector_to: "develop", state: "open", opened_by: { runtime_id: "runtime", worker_id: "worker", assignment_id: "assignment", }, created_at: "2026-09-01T00:00:00Z", updated_at: "2026-09-01T00:00:00Z", source: { status: "known", ref: "source-2", observed_at: "2026-09-01T00:00:00Z", }, target: { status: "known", ref: "target-2", observed_at: "2026-09-01T00:00:00Z", }, linked_tickets: [{ ticket_id: "T-1", key: "T-1" }], thread, }; } Deno.test("revoked review requires a fresh review instead of appearing pending", () => { const mergeRequest = detail([ event("review_requested", { event_id: "request-1", subject_ref: "source-2", }), event("review", { event_id: "review-1", request_event_id: "request-1", subject_ref: "source-2", decision: "approve", }), event("review_revoked", { event_id: "revoke-1", review_event_id: "review-1", }), ]); assertEquals( sourceReviewFreshness(mergeRequest), "Fresh source review required: no effective verdict exists for source-2.", ); }); Deno.test("unresolved review request for the current source is pending", () => { const mergeRequest = detail([ event("review_requested", { event_id: "request-2", subject_ref: "source-2", }), ]); assertEquals( sourceReviewFreshness(mergeRequest), "Current source review pending for exact ref source-2.", ); }); Deno.test("completed or cancelled request is not projected as pending", () => { const approved = detail([ event("review_requested", { event_id: "request-3", subject_ref: "source-2", }), event("review", { event_id: "review-3", request_event_id: "request-3", subject_ref: "source-2", decision: "approve", }), ]); assertEquals( sourceReviewFreshness(approved), "Current source approved at exact ref source-2.", ); const cancelled = detail([ event("review_requested", { event_id: "request-4", subject_ref: "source-2", }), event("review_cancelled", { event_id: "cancel-4", request_event_id: "request-4", subject_ref: "source-2", }), ]); assertEquals( sourceReviewFreshness(cancelled), "Fresh source review required: no effective verdict exists for source-2.", ); }); Deno.test("source movement explains the exact stale and current refs", () => { const mergeRequest = detail([ event("review", { event_id: "review-old", request_event_id: "request-old", subject_ref: "source-1", decision: "approve", }), ]); assertEquals( sourceReviewFreshness(mergeRequest), "Fresh source review required: selector_from moved from source-1 to source-2.", ); });