File size: 5,444 Bytes
cf86710 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | import { CalendarDay, defaultDateLib } from "../classes/index";
import { DayFlag } from "../UI";
import { createGetModifiers } from "./createGetModifiers";
const dateLib = defaultDateLib;
const displayedMonth = new Date(2022, 10, 1);
const date1 = new Date(2022, 9, 30);
const date2 = new Date(2022, 10, 10);
const date3 = new Date(2022, 10, 11);
const date4 = new Date(2022, 10, 12);
const date5 = new Date(2022, 10, 13);
const date6 = new Date(2022, 10, 14);
const date7 = new Date(2022, 11, 1);
const day1 = new CalendarDay(date1, displayedMonth);
const day2 = new CalendarDay(date2, displayedMonth);
const day3 = new CalendarDay(date3, displayedMonth);
const day4 = new CalendarDay(date4, displayedMonth);
const day5 = new CalendarDay(date5, displayedMonth);
const day6 = new CalendarDay(date6, displayedMonth);
const day7 = new CalendarDay(date7, displayedMonth);
const days: CalendarDay[] = [day1, day2, day3, day4, day5, day6, day7];
const props = {
disabled: [date2],
hidden: [date3],
modifiers: {
custom: [date4],
selected: [date6],
},
selected: date7,
showOutsideDays: true,
today: date5,
timeZone: "UTC",
};
describe("createGetModifiers", () => {
describe("default props", () => {
const getModifiers = createGetModifiers(
days,
props,
undefined,
undefined,
dateLib,
);
test("return the modifiers for a given day", () => {
const modifiers = getModifiers(day2);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(true);
expect(modifiers[DayFlag.hidden]).toBe(false);
expect(modifiers[DayFlag.outside]).toBe(false);
expect(modifiers[DayFlag.today]).toBe(false);
expect(modifiers.custom).toBe(false);
});
test("return the custom modifiers for a given day", () => {
const modifiers = getModifiers(day4);
expect(modifiers.custom).toBe(true);
});
test("return the custom `selected` modifier for a given day", () => {
const modifiers = getModifiers(day6);
expect(modifiers.selected).toBe(true);
});
test("return the today modifier for a given day", () => {
const modifiers = getModifiers(day5);
expect(modifiers[DayFlag.today]).toBe(true);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(false);
expect(modifiers[DayFlag.outside]).toBe(false);
expect(modifiers[DayFlag.hidden]).toBe(false);
});
test("return the hidden modifier for a given day", () => {
const modifiers = getModifiers(day3);
expect(modifiers[DayFlag.hidden]).toBe(true);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(false);
expect(modifiers[DayFlag.outside]).toBe(false);
expect(modifiers[DayFlag.today]).toBe(false);
});
test("return the modifiers for a given day before the displayed month", () => {
const modifiers = getModifiers(day1);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(false);
expect(modifiers[DayFlag.hidden]).toBe(false);
expect(modifiers[DayFlag.outside]).toBe(true);
expect(modifiers[DayFlag.today]).toBe(false);
expect(modifiers.selected).toBe(false);
});
test("return the modifiers for a given day after the displayed month", () => {
const modifiers = getModifiers(day7);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(false);
expect(modifiers[DayFlag.hidden]).toBe(false);
expect(modifiers[DayFlag.outside]).toBe(true);
expect(modifiers[DayFlag.today]).toBe(false);
expect(modifiers.selected).toBe(false);
});
});
describe("with startMonth and endMonth props", () => {
const startMonth = new Date(displayedMonth);
startMonth.setDate(30);
const endMonth = new Date(displayedMonth);
endMonth.setDate(1);
const getModifiers = createGetModifiers(
days,
props,
startMonth,
endMonth,
dateLib,
);
test("return the modifiers for a given day", () => {
const modifiers = getModifiers(day2);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(true);
expect(modifiers[DayFlag.hidden]).toBe(false);
expect(modifiers[DayFlag.outside]).toBe(false);
expect(modifiers[DayFlag.today]).toBe(false);
expect(modifiers.custom).toBe(false);
});
test("return the modifiers for a given day before the displayed month", () => {
const modifiers = getModifiers(day1);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(false);
expect(modifiers[DayFlag.hidden]).toBe(true);
expect(modifiers[DayFlag.outside]).toBe(true);
expect(modifiers[DayFlag.today]).toBe(false);
expect(modifiers.selected).toBe(false);
});
test("return the modifiers for a given day after the displayed month", () => {
const modifiers = getModifiers(day7);
expect(modifiers[DayFlag.focused]).toBe(false);
expect(modifiers[DayFlag.disabled]).toBe(false);
expect(modifiers[DayFlag.hidden]).toBe(true);
expect(modifiers[DayFlag.outside]).toBe(true);
expect(modifiers[DayFlag.today]).toBe(false);
expect(modifiers.selected).toBe(false);
});
});
});
|