import { describe, expect, test } from "bun:test"; import { submissionWebhookMessage } from "@/lib/submission-webhook"; import type { NormalizedSubmissionAnswer, SubmissionQuestion, } from "@/lib/submission-intake"; const questions: SubmissionQuestion[] = [ { id: "name", type: "text", label: "Character name", required: true, options: [], allowOther: false, }, ]; const answers: NormalizedSubmissionAnswer[] = [ { questionId: "name", value: "Erika", imageCdnId: null, displayValue: "Erika", }, ]; test("uses an image URL for image-only placeholders", () => { expect(submissionWebhookMessage({ template: "Image: {1}", isUpdate: false, userName: "Gunshiz", discordId: "123", submissionLink: "https://erika.sudloh.com/admin/form/form-1/result/submission-1", questions, answers: [{ questionId: "name", value: "", imageCdnId: "img-1", displayValue: "", }], oldAnswersByQuestionId: {}, })).toBe("Image: /cdn/img-1"); }); test("uses the configured template", () => { expect(submissionWebhookMessage({ template: "New answer: {1} by {username} ({id})", isUpdate: false, userName: "Gunshiz", discordId: "123", submissionLink: "https://erika.sudloh.com/admin/form/form-1/result/submission-1", questions, answers, oldAnswersByQuestionId: {}, })).toBe("New answer: Erika by Gunshiz (123)"); }); test("uses a submission result link placeholder", () => { expect(submissionWebhookMessage({ template: "Review: {link}", isUpdate: false, userName: "Gunshiz", discordId: "123", submissionLink: "https://erika.sudloh.com/admin/form/form-1/result/submission-1", questions, answers, oldAnswersByQuestionId: {}, })).toBe("Review: https://erika.sudloh.com/admin/form/form-1/result/submission-1"); }); describe("default templates", () => { test("sends a new-submission message when its template is blank", () => { expect(submissionWebhookMessage({ template: null, isUpdate: false, userName: "Gunshiz", discordId: "123", submissionLink: "https://erika.sudloh.com/admin/form/form-1/result/submission-1", questions, answers, oldAnswersByQuestionId: {}, })).toBe("New submission from Gunshiz (123)."); }); test("sends an update message when its template is blank", () => { expect(submissionWebhookMessage({ template: " ", isUpdate: true, userName: "Gunshiz", discordId: "123", submissionLink: "https://erika.sudloh.com/admin/form/form-1/result/submission-1", questions, answers, oldAnswersByQuestionId: { name: "Old name" }, })).toContain("Submission updated by Gunshiz (123)."); }); });