Files
erika/lib/form/submission-intake.test.ts
T

44 lines
1.5 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { normalizeSubmissionAnswers } from "@/lib/form/submission-intake";
const question = {
id: "question-1",
type: "text" as const,
label: "Proof",
options: null,
allowOther: false,
};
describe("image response submission validation", () => {
test("accepts an image-only response without text", () => {
expect(normalizeSubmissionAnswers(
[{ ...question, required: false, imageAnswerMode: "required" }],
[{ questionId: question.id, value: "", imageCdnId: "image-1" }],
)).toEqual([
{
questionId: question.id,
value: "",
imageCdnId: "image-1",
displayValue: "",
},
]);
});
test("requires both parts of an answer + required image response", () => {
expect(() => normalizeSubmissionAnswers(
[{ ...question, required: true, imageAnswerMode: "required" }],
[{ questionId: question.id, value: "", imageCdnId: "image-1" }],
)).toThrow("จำเป็นต้องตอบ");
expect(() => normalizeSubmissionAnswers(
[{ ...question, required: true, imageAnswerMode: "required" }],
[{ questionId: question.id, value: "answer", imageCdnId: null }],
)).toThrow("จำเป็นต้องอัปโหลดรูป");
expect(normalizeSubmissionAnswers(
[{ ...question, required: true, imageAnswerMode: "required" }],
[{ questionId: question.id, value: "answer", imageCdnId: "image-1" }],
)).toHaveLength(1);
});
});