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() &&