react-day-picker / src /utils /dateMatchModifiers.test.ts
AbdulElahGwaith's picture
Upload folder using huggingface_hub
cf86710 verified
import { addDays, subDays } from "date-fns";
import { defaultDateLib } from "../classes/DateLib";
import type {
DateAfter,
DateBefore,
DateInterval,
DateRange,
DayOfWeek,
} from "../types";
import { dateMatchModifiers } from "./dateMatchModifiers";
const testDay = new Date();
describe("when the matcher is a boolean", () => {
const matcher = true;
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return the boolean", () => {
expect(result).toBe(matcher);
});
});
describe("when matching the same day", () => {
const matcher = testDay;
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when matching an array of dates including the day", () => {
const matcher = [
addDays(testDay, -1),
new Date(testDay),
addDays(testDay, 1),
];
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when matching date range", () => {
const matcher: DateRange = {
from: testDay,
to: addDays(testDay, 1),
};
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when matching the day of week", () => {
const matcher: DayOfWeek = {
dayOfWeek: [testDay.getDay()],
};
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when matching date interval (closed)", () => {
const matcher: DateInterval = {
before: addDays(testDay, 5),
after: subDays(testDay, 3),
};
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true for the included day", () => {
expect(result).toBe(true);
});
});
describe("when matching date interval (open)", () => {
const matcher: DateInterval = {
before: subDays(testDay, 4),
after: addDays(testDay, 5),
};
test("should return false", () => {
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
expect(result).toBe(false);
});
test("should return true for the days before", () => {
const result = dateMatchModifiers(
subDays(testDay, 8),
[matcher],
defaultDateLib,
);
expect(result).toBe(true);
});
test("should return true for the days after", () => {
const result = dateMatchModifiers(
addDays(testDay, 8),
[matcher],
defaultDateLib,
);
expect(result).toBe(true);
});
});
describe("when matching the date after", () => {
const matcher: DateAfter = { after: addDays(testDay, -1) };
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when matching the date before", () => {
const matcher: DateBefore = { before: addDays(testDay, +1) };
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when the matcher is a function", () => {
const matcher = () => true;
const result = dateMatchModifiers(testDay, [matcher], defaultDateLib);
test("should return the result of the function", () => {
expect(result).toBe(true);
});
});