import { render, fireEvent } from "@testing-library/react"; import React from "react"; import DatePicker from "../index"; import { safeQuerySelector } from "./test_utils"; describe("WeekPicker", () => { it("should change the week when clicked on any option in the picker", () => { const onChangeSpy = jest.fn(); const { container } = render( , ); expect(onChangeSpy).not.toHaveBeenCalled(); const input = safeQuerySelector(container, "input"); fireEvent.focus(input); const dayElement = safeQuerySelector(container, ".react-datepicker__day"); fireEvent.click(dayElement); expect(onChangeSpy).toHaveBeenCalled(); }); it("should change the week when clicked on any week number in the picker", () => { const onChangeSpy = jest.fn(); const { container } = render( , ); expect(onChangeSpy).not.toHaveBeenCalled(); const input = safeQuerySelector(container, "input"); fireEvent.focus(input); const weekNumber = safeQuerySelector( container, ".react-datepicker__week-number", ); fireEvent.click(weekNumber); expect(onChangeSpy).toHaveBeenCalled(); }); it("should change the week with few disabled dates (not all) when clicked on any week number in the picker", () => { const onChangeSpy = jest.fn(); const { container } = render( , ); const input = container.querySelector("input")!; expect(input).not.toBeNull(); fireEvent.focus(input); const weekNumber = container.querySelector( '.react-datepicker__week-number[aria-label="week 1"]', )!; expect(weekNumber).not.toBeNull(); fireEvent.click(weekNumber); expect(onChangeSpy).toHaveBeenCalledTimes(1); const selectedDate = onChangeSpy.mock.calls[0][0]; expect(selectedDate.getFullYear()).toBe(2024); expect(selectedDate.getMonth()).toBe(0); expect(selectedDate.getDate()).toBe(12); }); it("should not change the week with all the dates in a selected week is disabled", () => { const onChangeSpy = jest.fn(); const { container } = render( , ); const input = container.querySelector("input")!; expect(input).not.toBeNull(); fireEvent.focus(input); const weekNumber = container.querySelector( '.react-datepicker__week-number[aria-label="week 1"]', )!; expect(weekNumber).not.toBeNull(); fireEvent.click(weekNumber); expect(onChangeSpy).not.toHaveBeenCalled(); }); });