diff --git a/__test__/components/Calendar.test.tsx b/__test__/components/Calendar.test.tsx index 26767ca..ed47fc3 100644 --- a/__test__/components/Calendar.test.tsx +++ b/__test__/components/Calendar.test.tsx @@ -174,6 +174,77 @@ describe("CalendarSelection", () => { fireEvent.click(addButton); expect(sharedAccordionSummary).toHaveAttribute("aria-expanded", "true"); }); + it("BUGFIX: remove dots in mini calendar when unselecting personnal calendar", () => { + renderWithProviders(, preloadedState); + + const checkbox = screen.getByLabelText("Calendar personnal"); + // checkbox checked : events shown + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).toHaveClass("event-dot"); + + // checkbox unchecked : events hidden + fireEvent.click(checkbox); + + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).not.toHaveClass("event-dot"); + + // checkbox rechecked : events shown + fireEvent.click(checkbox); + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).toHaveClass("event-dot"); + }); + it("BUGFIX: remove dots in mini calendar when unselecting delegated calendar", () => { + renderWithProviders(, preloadedState); + + // hide personnal event first + fireEvent.click(screen.getByLabelText("Calendar personnal")); + const checkbox = screen.getByLabelText("Calendar delegated"); + + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).not.toHaveClass("event-dot"); + + // checkbox checked : events shown + fireEvent.click(checkbox); + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).toHaveClass("event-dot"); + }); + it("BUGFIX: remove dots in mini calendar when unselecting shared calendar", () => { + renderWithProviders(, preloadedState); + + // hide personnal event first + fireEvent.click(screen.getByLabelText("Calendar personnal")); + const checkbox = screen.getByLabelText("Calendar shared"); + + // checkbox unchecked : events hidden + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).not.toHaveClass("event-dot"); + + // checkbox checked : events shown + fireEvent.click(checkbox); + expect( + screen.getByTestId( + `date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}` + ) + ).toHaveClass("event-dot"); + }); }); describe("calendar Availability search", () => { diff --git a/src/components/Calendar/Calendar.tsx b/src/components/Calendar/Calendar.tsx index 2d9d428..d03cb5f 100644 --- a/src/components/Calendar/Calendar.tsx +++ b/src/components/Calendar/Calendar.tsx @@ -63,30 +63,11 @@ export default function CalendarApp({ const tempcalendars = useAppSelector((state) => state.calendars.templist) ?? {}; const pending = useAppSelector((state) => state.calendars.pending); - const selectPersonnalCalendars = createSelector( - (state) => state.calendars, - (calendars) => - Object.keys(calendars.list).map((id) => { - if (id.split("/")[0] === userId) { - return calendars.list[id]; - } - return {} as Calendars; - }) - ); - const userPersonnalCalendars: Calendars[] = useAppSelector( - selectPersonnalCalendars - ); - let personnalEvents: CalendarEvent[] = []; - Object.keys(userPersonnalCalendars).forEach((value, id) => { - if (userPersonnalCalendars[id].events) { - personnalEvents = personnalEvents.concat( - Object.keys(userPersonnalCalendars[id].events).map( - (eventid) => userPersonnalCalendars[id].events[eventid] - ) - ); - } - }); const [selectedCalendars, setSelectedCalendars] = useState([]); + + const dottedEvents: CalendarEvent[] = selectedCalendars.flatMap((calId) => + Object.values(calendars[calId].events) + ); const fetchedRangesRef = useRef>({}); // Auto-select personal calendars when first loaded @@ -296,7 +277,7 @@ export default function CalendarApp({ }} tileContent={({ date }) => { const classNames: string[] = []; - const hasEvents = personnalEvents.some((event) => { + const hasEvents = dottedEvents.some((event) => { const eventDate = new Date(event.start); return ( eventDate.getFullYear() === date.getFullYear() &&