48 lines
1.8 KiB
TypeScript
48 lines
1.8 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import {
|
|
getQuestionResponseSettings,
|
|
getQuestionResponseType,
|
|
isImageOnlyResponse,
|
|
} from "@/lib/question-response-type";
|
|
|
|
describe("question response types", () => {
|
|
test("maps stored question settings to the four editor choices", () => {
|
|
expect(getQuestionResponseType({ required: true, imageAnswerMode: "none" }))
|
|
.toBe("answer-only");
|
|
expect(getQuestionResponseType({ required: true, imageAnswerMode: "optional" }))
|
|
.toBe("answer-optional-image");
|
|
expect(getQuestionResponseType({ required: false, imageAnswerMode: "required" }))
|
|
.toBe("image-only");
|
|
expect(getQuestionResponseType({ required: true, imageAnswerMode: "required" }))
|
|
.toBe("answer-required-image");
|
|
});
|
|
|
|
test("turns each editor choice into its validation settings", () => {
|
|
expect(getQuestionResponseSettings("answer-only", false)).toEqual({
|
|
required: false,
|
|
imageAnswerMode: "none",
|
|
});
|
|
expect(getQuestionResponseSettings("answer-only", true)).toEqual({
|
|
required: true,
|
|
imageAnswerMode: "none",
|
|
});
|
|
expect(getQuestionResponseSettings("answer-optional-image", false)).toEqual({
|
|
required: false,
|
|
imageAnswerMode: "optional",
|
|
});
|
|
expect(getQuestionResponseSettings("image-only")).toEqual({
|
|
required: false,
|
|
imageAnswerMode: "required",
|
|
});
|
|
expect(getQuestionResponseSettings("answer-required-image")).toEqual({
|
|
required: true,
|
|
imageAnswerMode: "required",
|
|
});
|
|
});
|
|
|
|
test("recognizes only required-image questions without a required answer as image-only", () => {
|
|
expect(isImageOnlyResponse({ required: false, imageAnswerMode: "required" })).toBeTrue();
|
|
expect(isImageOnlyResponse({ required: true, imageAnswerMode: "required" })).toBeFalse();
|
|
});
|
|
});
|