BUGFIX : Minicalendar event toggle (#202)

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
This commit is contained in:
Camille Moussu
2025-10-10 11:18:49 +02:00
committed by GitHub
parent 066d37a29a
commit f498309f44
2 changed files with 76 additions and 24 deletions
+71
View File
@@ -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(<CalendarLayout />, 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(<CalendarLayout />, 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(<CalendarLayout />, 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", () => {
+5 -24
View File
@@ -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<string[]>([]);
const dottedEvents: CalendarEvent[] = selectedCalendars.flatMap((calId) =>
Object.values(calendars[calId].events)
);
const fetchedRangesRef = useRef<Record<string, string>>({});
// 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() &&