44 lines
1.5 KiB
TypeScript
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);
|
|
});
|
|
});
|