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", displayValue: "Erika", }, ]; test("uses the configured template", () => { expect(submissionWebhookMessage({ template: "New answer: {1} by {username} ({id})", isUpdate: false, userName: "Gunshiz", discordId: "123", questions, answers, oldAnswersByQuestionId: {}, })).toBe("New answer: Erika by Gunshiz (123)"); }); describe("default templates", () => { test("sends a new-submission message when its template is blank", () => { expect(submissionWebhookMessage({ template: null, isUpdate: false, userName: "Gunshiz", discordId: "123", 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", questions, answers, oldAnswersByQuestionId: { name: "Old name" }, })).toContain("Submission updated by Gunshiz (123)."); }); });