import { keysToCamelCase } from "zod-to-camel-case"; import type { Match, MatchCamel, MultipleChoice, MultipleChoiceCamel, Order, OrderCamel, ShortAnswer, ShortAnswerCamel, } from "@/schema/public/components/quizAnswers/quizAnswers.schema"; import { imageItemFixture, textItemFixture, } from "@/schema/public/components/imageTextItems/imageTextItems.fixture"; export const multipleChoiceFixture = ({ overrides = {}, }: { overrides?: Partial; } = {}): MultipleChoice => ({ answer: [textItemFixture(), imageItemFixture()], answer_is_active: true, answer_is_correct: true, ...overrides, }); export const multipleChoiceFixtureCamel = ({ overrides = {}, }: { overrides?: Partial; } = {}): MultipleChoiceCamel => ({ // keysToCamelCase correctly deep-converts image_object → imageObject at runtime, // but keysToCamelCase can't infer through Zod union types ...(keysToCamelCase( multipleChoiceFixture(), ) as unknown as MultipleChoiceCamel), ...overrides, }); export const shortAnswerFixture = ({ overrides = {}, }: { overrides?: Partial; } = {}): ShortAnswer => ({ answer: [textItemFixture()], answer_is_active: true, answer_is_default: true, ...overrides, }); export const shortAnswerFixtureCamel = ({ overrides = {}, }: { overrides?: Partial; } = {}): ShortAnswerCamel => ({ ...keysToCamelCase(shortAnswerFixture()), ...overrides, }); export const orderFixture = ({ overrides = {}, }: { overrides?: Partial; } = {}): Order => ({ answer: [textItemFixture()], correct_order: 1, answer_is_active: true, ...overrides, }); export const orderFixtureCamel = ({ overrides = {}, }: { overrides?: Partial; } = {}): OrderCamel => ({ ...keysToCamelCase(orderFixture()), ...overrides, }); export const matchFixture = ({ overrides = {}, }: { overrides?: Partial; } = {}): Match => ({ answer_is_active: true, correct_choice: [textItemFixture({ overrides: { text: "Paris" } })], match_option: [textItemFixture({ overrides: { text: "Capital of France" } })], ...overrides, }); export const matchFixtureCamel = ({ overrides = {}, }: { overrides?: Partial; } = {}): MatchCamel => ({ ...keysToCamelCase(matchFixture()), ...overrides, });