import { render } from "@testing-library/react"; import { addDays, subDays } from "date-fns"; import React from "react"; import DatePicker from "../index"; describe("DatePicker", () => { const today = new Date(); // otherDate must be in same month, otherwise it will not be shown on the calendar const otherDate = today.getDate() === 1 ? addDays(today, 1) : subDays(today, 1); const excludeDates = [today, otherDate]; const excludeDatesWithMessages = [ { date: otherDate, message: "This day is excluded" }, { date: today, message: "Today is excluded" }, ]; it("should disable dates specified in excludeDates props", () => { const { container: datePicker } = render( , ); const disabledTimeItems = datePicker.querySelectorAll( ".react-datepicker__day--excluded", ); expect(disabledTimeItems.length).toBe(excludeDates.length); }); it("should disable dates specified in excludeDates props and should show the reason", () => { const { container: datePicker } = render( , ); const disabledTimeItems = datePicker.querySelectorAll( ".react-datepicker__day--excluded", ); expect(disabledTimeItems.length).toBe(excludeDatesWithMessages.length); expect( disabledTimeItems[today < otherDate ? 1 : 0]?.getAttribute("title"), ).toBe("This day is excluded"); expect( disabledTimeItems[today < otherDate ? 0 : 1]?.getAttribute("title"), ).toBe("Today is excluded"); }); });