Files
clawdbot/src/polls.test.ts
2026-01-06 04:51:05 +00:00

42 lines
1.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { normalizePollDurationHours, normalizePollInput } from "./polls.js";
describe("polls", () => {
it("normalizes question/options and validates maxSelections", () => {
expect(
normalizePollInput({
question: " Lunch? ",
options: [" Pizza ", " ", "Sushi"],
maxSelections: 2,
}),
).toEqual({
question: "Lunch?",
options: ["Pizza", "Sushi"],
maxSelections: 2,
durationHours: undefined,
});
});
it("enforces max option count when configured", () => {
expect(() =>
normalizePollInput(
{ question: "Q", options: ["A", "B", "C"] },
{ maxOptions: 2 },
),
).toThrow(/at most 2/);
});
it("clamps poll duration with defaults", () => {
expect(
normalizePollDurationHours(undefined, { defaultHours: 24, maxHours: 48 }),
).toBe(24);
expect(
normalizePollDurationHours(999, { defaultHours: 24, maxHours: 48 }),
).toBe(48);
expect(
normalizePollDurationHours(1, { defaultHours: 24, maxHours: 48 }),
).toBe(1);
});
});