paperclip/ui/src/lib/cron-readable.test.ts

32 lines
975 B
TypeScript

import { describe, expect, it } from "vitest";
import { describeCron } from "./cron-readable";
describe("describeCron", () => {
it("describes a daily time", () => {
expect(describeCron("0 14 * * *")).toBe("Every day at 14:00");
});
it("describes every-weekday", () => {
expect(describeCron("0 14 * * 1-5")).toBe("Every weekday at 14:00");
});
it("describes a single day-of-week", () => {
expect(describeCron("30 9 * * 1")).toBe("Every Monday at 09:30");
});
it("describes every N minutes", () => {
expect(describeCron("*/15 * * * *")).toBe("Every 15 minutes");
});
it("describes hourly on a minute", () => {
expect(describeCron("5 * * * *")).toBe("Every hour at :05");
});
it("returns null for empty or unparseable input", () => {
expect(describeCron("")).toBeNull();
expect(describeCron(undefined)).toBeNull();
expect(describeCron("not a cron")).toBeNull();
expect(describeCron("1 2 3")).toBeNull();
});
});