You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.6 KiB

import { describe, expect, it } from "vitest";
import {
defaultFlockPickupDateIso,
flockPickupDateValidationMessageFromDisplay,
flockPickupDateValidationMessageFromIso,
isFlockPickupDateOnOrAfterToday,
minFlockPickupDateIso,
} from "@/lib/flock/pickup-date";
describe("flock pickup date", () => {
it("今天及以后合法", () => {
const today = minFlockPickupDateIso();
expect(isFlockPickupDateOnOrAfterToday(today)).toBe(true);
expect(flockPickupDateValidationMessageFromIso(today)).toBeNull();
expect(
flockPickupDateValidationMessageFromIso(defaultFlockPickupDateIso()),
).toBeNull();
});
it("早于今天拒绝", () => {
const d = new Date();
d.setDate(d.getDate() - 1);
const yyyy = d.getFullYear();
const mm = String(d.getMonth() + 1).padStart(2, "0");
const dd = String(d.getDate()).padStart(2, "0");
const iso = `${yyyy}-${mm}-${dd}`;
expect(isFlockPickupDateOnOrAfterToday(iso)).toBe(false);
expect(flockPickupDateValidationMessageFromIso(iso)).toMatch(/不能早于今天/);
expect(
flockPickupDateValidationMessageFromDisplay(`${mm}/${dd}/${yyyy}`),
).toMatch(/不能早于今天/);
});
it("周六周日拒绝", () => {
expect(flockPickupDateValidationMessageFromIso("2026-07-18")).toMatch(
/周六或周日/,
);
expect(flockPickupDateValidationMessageFromDisplay("07/19/2026")).toMatch(
/周六或周日/,
);
expect(flockPickupDateValidationMessageFromIso("2026-07-20")).toBeNull();
});
it("默认值为工作日", () => {
expect(flockPickupDateValidationMessageFromIso(defaultFlockPickupDateIso())).toBeNull();
});
});