diff --git a/__test__/features/Events/EventDisplay.test.tsx b/__test__/features/Events/EventDisplay.test.tsx
index 9ae32d5..28ded30 100644
--- a/__test__/features/Events/EventDisplay.test.tsx
+++ b/__test__/features/Events/EventDisplay.test.tsx
@@ -15,6 +15,7 @@ describe("Event Preview Display", () => {
beforeEach(() => {
jest.clearAllMocks();
+ (window as any).MAIL_SPA_URL = null;
});
const preloadedState = {
@@ -63,6 +64,14 @@ describe("Event Preview Display", () => {
},
],
},
+ event2: {
+ id: "event2",
+ title: "Test Event",
+ calId: "667037022b752d0026472254/cal1",
+ start: day.toISOString(),
+ end: day.toISOString(),
+ organizer: { cn: "test", cal_address: "test@test.com" },
+ },
},
},
"otherCal/cal": {
@@ -505,6 +514,78 @@ describe("Event Preview Display", () => {
});
expect(screen.getByText("Edit Event")).toBeInTheDocument();
});
+ it("properly render message button when MAIL_SPA_URL is not null and event has attendees", () => {
+ (window as any).MAIL_SPA_URL = "test";
+ renderWithProviders(
+ ,
+ preloadedState
+ );
+ expect(screen.getByTestId("EmailIcon")).toBeInTheDocument();
+ });
+ it("doesnt render message button when MAIL_SPA_URL is not null and event has no attendees", () => {
+ (window as any).MAIL_SPA_URL = "test";
+ renderWithProviders(
+ ,
+ preloadedState
+ );
+ expect(screen.queryByTestId("EmailIcon")).not.toBeInTheDocument();
+ });
+ it("doesnt render message button when MAIL_SPA_URL is null and event has attendees", () => {
+ renderWithProviders(
+ ,
+ preloadedState
+ );
+ expect(screen.queryByTestId("EmailIcon")).not.toBeInTheDocument();
+ });
+ it("message button opens url with attendees as uri and title as subject", () => {
+ (window as any).MAIL_SPA_URL = "test";
+ const mockOpen = jest.fn();
+ window.open = mockOpen;
+
+ renderWithProviders(
+ ,
+ preloadedState
+ );
+
+ const emailButton = screen.getByTestId("EmailIcon");
+ expect(emailButton).toBeInTheDocument();
+
+ fireEvent.click(emailButton.closest("button")!);
+
+ const event =
+ preloadedState.calendars.list["667037022b752d0026472254/cal1"].events[
+ "event1"
+ ];
+ const expectedUrl = `test/mailto/?uri=mailto:${event.attendee
+ .map((a) => a.cal_address)
+ .join(",")}?subject=${event.title}`;
+
+ expect(mockOpen).toHaveBeenCalledWith(expectedUrl);
+ });
});
describe("Event Full Display", () => {
diff --git a/src/features/Events/EventDisplayPreview.tsx b/src/features/Events/EventDisplayPreview.tsx
index 7350380..a37e48c 100644
--- a/src/features/Events/EventDisplayPreview.tsx
+++ b/src/features/Events/EventDisplayPreview.tsx
@@ -122,7 +122,7 @@ export default function EventPreviewModal({
gap: 1,
}}
>
- {mailSpaUrl && attendees.length > 1 && (
+ {mailSpaUrl && attendees.length > 0 && (