| import { act, renderHook } from "@/test/render"; |
|
|
| import { defaultDateLib } from "../classes/DateLib"; |
| import type { DayPickerProps } from "../types"; |
|
|
| import { useMulti } from "./useMulti"; |
|
|
| describe("useMulti", () => { |
| it("uses the selected value from props when onSelect is provided", () => { |
| const mockOnSelect = jest.fn(); |
| const selectedDates = [new Date(2023, 9, 1), new Date(2023, 9, 2)]; |
| const props: DayPickerProps = { |
| mode: "multiple", |
| selected: selectedDates, |
| onSelect: mockOnSelect, |
| }; |
|
|
| const { result } = renderHook(() => useMulti(props, defaultDateLib)); |
|
|
| expect(result.current.selected).toBe(selectedDates); |
| }); |
|
|
| it("uses the internally selected value when onSelect is not provided", () => { |
| const initialSelectedDates = [new Date(2023, 9, 1), new Date(2023, 9, 2)]; |
| const props: DayPickerProps = { |
| mode: "multiple", |
| selected: initialSelectedDates, |
| }; |
|
|
| const { result } = renderHook(() => useMulti(props, defaultDateLib)); |
|
|
| act(() => { |
| result.current.select?.(new Date(2023, 9, 3), {}, {} as React.MouseEvent); |
| }); |
|
|
| expect(result.current.selected).toEqual([ |
| ...initialSelectedDates, |
| new Date(2023, 9, 3), |
| ]); |
| }); |
| }); |
|
|