Files
erika/lib/submission-webhook.test.ts
T
2026-07-27 19:16:56 +07:00

64 lines
1.5 KiB
TypeScript

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).");
});
});