import { describe, expect, test } from "vitest"; import { CheckoutPrMergeRequestSchema, CheckoutPrStatusSchema } from "./messages.js"; describe("checkout PR schemas", () => { test("parses PR status payloads without mergeability", () => { expect( CheckoutPrStatusSchema.parse({ number: 42, url: "https://github.com/getpaseo/paseo/pull/42", title: "Ship it", state: "open", baseRefName: "main", headRefName: "feature/ship-it", isMerged: false, }), ).toMatchObject({ number: 42, mergeable: "UNKNOWN", }); }); test.each(["merge", "squash", "rebase"] as const)( "accepts %s as a PR merge method", (mergeMethod) => { expect( CheckoutPrMergeRequestSchema.parse({ type: "checkout_pr_merge_request", cwd: "/tmp/repo", mergeMethod, requestId: "request-merge-pr", }), ).toMatchObject({ mergeMethod }); }, ); test("rejects unknown PR merge methods", () => { expect(() => CheckoutPrMergeRequestSchema.parse({ type: "checkout_pr_merge_request", cwd: "/tmp/repo", mergeMethod: "auto", requestId: "request-merge-pr", }), ).toThrow(); }); });