diff --git a/packages/shared/src/validators/approval.test.ts b/packages/shared/src/validators/approval.test.ts index 15034d7001d..051d29b2740 100644 --- a/packages/shared/src/validators/approval.test.ts +++ b/packages/shared/src/validators/approval.test.ts @@ -6,6 +6,20 @@ import { } from "./approval.js"; describe("approval validators", () => { + it("passes real line breaks through unchanged", () => { + expect(addApprovalCommentSchema.parse({ body: "Looks good\n\nApproved." }).body) + .toBe("Looks good\n\nApproved."); + expect(resolveApprovalSchema.parse({ decisionNote: "Decision\n\nApproved." }).decisionNote) + .toBe("Decision\n\nApproved."); + }); + + it("accepts null and omitted optional decision notes", () => { + expect(resolveApprovalSchema.parse({ decisionNote: null }).decisionNote).toBeNull(); + expect(resolveApprovalSchema.parse({}).decisionNote).toBeUndefined(); + expect(requestApprovalRevisionSchema.parse({ decisionNote: null }).decisionNote).toBeNull(); + expect(requestApprovalRevisionSchema.parse({}).decisionNote).toBeUndefined(); + }); + it("normalizes escaped line breaks in approval comments and decision notes", () => { expect(addApprovalCommentSchema.parse({ body: "Looks good\\n\\nApproved." }).body) .toBe("Looks good\n\nApproved."); diff --git a/packages/shared/src/validators/issue.test.ts b/packages/shared/src/validators/issue.test.ts index 4f1ecf45141..4fa908e40cb 100644 --- a/packages/shared/src/validators/issue.test.ts +++ b/packages/shared/src/validators/issue.test.ts @@ -9,6 +9,24 @@ import { } from "./issue.js"; describe("issue validators", () => { + it("passes real line breaks through unchanged", () => { + const parsed = createIssueSchema.parse({ + title: "Follow up PR", + description: "Line 1\n\nLine 2", + }); + + expect(parsed.description).toBe("Line 1\n\nLine 2"); + }); + + it("accepts null and omitted optional multiline issue fields", () => { + expect(createIssueSchema.parse({ title: "Follow up PR", description: null }).description) + .toBeNull(); + expect(createIssueSchema.parse({ title: "Follow up PR" }).description) + .toBeUndefined(); + expect(updateIssueSchema.parse({ comment: undefined }).comment) + .toBeUndefined(); + }); + it("normalizes JSON-escaped line breaks in issue descriptions", () => { const parsed = createIssueSchema.parse({ title: "Follow up PR",