import React from "react"; import { dateButton, gridcell } from "@/test/elements"; import { render } from "@/test/render"; import { setTestTime } from "@/test/setTestTime"; import { user } from "@/test/user"; import { ControlledSelection } from "./ControlledSelection"; const today = new Date(2024, 8, 17); setTestTime(today); beforeEach(async () => {}); test("a range is selected after clicking two dates", async () => { render(); await user.click(dateButton(new Date(2024, 8, 1))); await user.click(dateButton(new Date(2024, 8, 4))); expect(gridcell(new Date(2024, 8, 1), true)).toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 2), true)).toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 3), true)).toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 4), true)).toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 5), true)).not.toHaveAttribute( "aria-selected", "true", ); }); test("a range is reset after clicking a third date", async () => { const consoleSpy = jest.spyOn(console, "log"); render(); await user.click(dateButton(new Date(2024, 8, 1))); await user.click(dateButton(new Date(2024, 8, 4))); await user.click(dateButton(new Date(2024, 8, 5))); expect(console.log).toHaveBeenCalledWith("reset range"); expect(gridcell(new Date(2024, 8, 1), true)).not.toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 2), true)).not.toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 3), true)).not.toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 4), true)).not.toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 5), true)).toHaveAttribute( "aria-selected", "true", ); expect(gridcell(new Date(2024, 8, 6), true)).not.toHaveAttribute( "aria-selected", "true", ); consoleSpy.mockRestore(); });