react-day-picker
Version:
Customizable Date Picker for React
118 lines (101 loc) • 4.21 kB
text/typescript
import { addToRange } from "./addToRange";
describe("addToRange", () => {
test("add a date to an undefined range", () => {
const date = new Date(2022, 0, 1);
const range = addToRange(date, undefined);
expect(range).toEqual({ from: date, to: date });
});
test("add a date to an empty range", () => {
const date = new Date(2022, 0, 1);
const range = addToRange(date, { from: undefined, to: undefined });
expect(range).toEqual({ from: date, to: date });
});
test("add a date to an incomplete range with same start date", () => {
const date = new Date(2022, 0, 1);
const range = addToRange(date, { from: date, to: undefined });
expect(range).toEqual(undefined);
});
test("add a date to an incomplete range with earlier date", () => {
const from = new Date(2022, 0, 1);
const earlierDate = new Date(2021, 11, 31);
const range = addToRange(earlierDate, { from: from, to: undefined });
expect(range).toEqual({ from: earlierDate, to: from });
});
test("add a date to an incomplete range with later date", () => {
const from = new Date(2022, 0, 1);
const date = new Date(2022, 0, 2);
const range = addToRange(date, { from: from, to: undefined });
expect(range).toEqual({ from: from, to: date });
});
test("add a date to a complete range with same start and end date", () => {
const date = new Date(2022, 0, 1);
const from = date;
const to = date;
const range = addToRange(date, { from, to }, 0, 0, false);
expect(range).toEqual(undefined);
});
test("add a date to a complete range with same start date", () => {
const date = new Date(2022, 0, 1);
const to = new Date(2022, 0, 2);
const range = addToRange(date, { from: date, to: to });
expect(range).toEqual({ from: date, to: date });
});
test("add a date to a complete range with same end date", () => {
const date = new Date(2022, 0, 2);
const from = new Date(2022, 0, 1);
const range = addToRange(date, { from: from, to: date });
expect(range).toEqual({ from: date, to: date });
});
test("add a date when inside the range", () => {
const date = new Date(2022, 0, 1);
const from = new Date(2021, 11, 31);
const to = new Date(2022, 0, 2);
const range = addToRange(date, { from, to });
expect(range).toEqual({ from, to: date });
});
test("add an earlier date to a complete range", () => {
const from = new Date(2022, 0, 1);
const to = new Date(2022, 0, 2);
const date = new Date(2021, 11, 31);
const range = addToRange(date, { from, to });
expect(range).toEqual({ from: date, to: to });
});
test("add a later date to a complete range", () => {
const date = new Date(2022, 0, 2);
const from = new Date(2021, 11, 31);
const to = new Date(2022, 0, 1);
const range = addToRange(date, { from, to });
expect(range).toEqual({ from: from, to: date });
});
test("add a date with min > 0", () => {
const date = new Date(2022, 0, 1);
const range = addToRange(date, undefined, 1, 0, false);
expect(range).toEqual({ from: date, to: undefined });
});
test("add a date with max > 0", () => {
const date = new Date(2022, 0, 1);
const range = addToRange(date, undefined, 0, 1, false);
expect(range).toEqual({ from: date, to: date });
});
test("add a date with required set to true", () => {
const date = new Date(2022, 0, 1);
const range = addToRange(date, undefined, 0, 0, true);
expect(range).toEqual({ from: date, to: date });
});
test("when exceeding max, set the start of the range", () => {
const from = new Date(2022, 0, 1);
const to = new Date(2022, 0, 2);
const date = new Date(2022, 0, 4);
const max = 2;
const range = addToRange(date, { from, to }, 0, max, false);
expect(range).toEqual({ from: date, to: undefined });
});
test("when below min, set the start of the range", () => {
const from = new Date(2021, 11, 20);
const to = new Date(2022, 0, 2);
const date = new Date(2021, 11, 21);
const min = 5;
const range = addToRange(date, { from, to }, min, 0, false);
expect(range).toEqual({ from: date, to: undefined });
});
});