mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-15 18:30:39 +09:00
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
|
|
import { describe, expect, it } from "vitest";
|
||
|
|
import {
|
||
|
|
addApprovalCommentSchema,
|
||
|
|
requestApprovalRevisionSchema,
|
||
|
|
resolveApprovalSchema,
|
||
|
|
} 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.");
|
||
|
|
expect(resolveApprovalSchema.parse({ decisionNote: "Decision\\n\\nApproved." }).decisionNote)
|
||
|
|
.toBe("Decision\n\nApproved.");
|
||
|
|
expect(requestApprovalRevisionSchema.parse({ decisionNote: "Decision\\r\\nRevise." }).decisionNote)
|
||
|
|
.toBe("Decision\nRevise.");
|
||
|
|
});
|
||
|
|
});
|