react-day-picker
Version:
Customizable Date Picker for React
113 lines (100 loc) • 3.28 kB
text/typescript
import { addDays, subDays } from "date-fns";
import { dateLib } from "../lib";
import {
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], dateLib);
test("should return the boolean", () => {
expect(result).toBe(matcher);
});
});
describe("when matching the same day", () => {
const matcher = testDay;
const result = dateMatchModifiers(testDay, [matcher], dateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when matching an array of dates including the day", () => {
const matcher = [addDays(testDay, -1), testDay, addDays(testDay, 1)];
const result = dateMatchModifiers(testDay, [matcher], dateLib);
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], dateLib);
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], dateLib);
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], dateLib);
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], dateLib);
expect(result).toBe(false);
});
test("should return true for the days before", () => {
const result = dateMatchModifiers(subDays(testDay, 8), [matcher], dateLib);
expect(result).toBe(true);
});
test("should return true for the days after", () => {
const result = dateMatchModifiers(addDays(testDay, 8), [matcher], dateLib);
expect(result).toBe(true);
});
});
describe("when matching the date after", () => {
const matcher: DateAfter = { after: addDays(testDay, -1) };
const result = dateMatchModifiers(testDay, [matcher], dateLib);
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], dateLib);
test("should return true", () => {
expect(result).toBe(true);
});
});
describe("when the matcher is a function", () => {
const matcher = () => true;
const result = dateMatchModifiers(testDay, [matcher], dateLib);
test("should return the result of the function", () => {
expect(result).toBe(true);
});
});