Co-authored-by: Camille Moussu <cmoussu@linagora.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
import { fireEvent, screen, waitFor } from "@testing-library/react";
|
import { act, fireEvent, screen, waitFor } from "@testing-library/react";
|
||||||
import "@testing-library/jest-dom";
|
import "@testing-library/jest-dom";
|
||||||
import { Menubar } from "../../src/components/Menubar/Menubar";
|
import { Menubar } from "../../src/components/Menubar/Menubar";
|
||||||
import { renderWithProviders } from "../utils/Renderwithproviders";
|
import { renderWithProviders } from "../utils/Renderwithproviders";
|
||||||
|
import * as oidcAuth from "../../src/features/User/oidcAuth";
|
||||||
|
|
||||||
describe("Calendar App Component Display Tests", () => {
|
describe("Calendar App Component Display Tests", () => {
|
||||||
const preloadedState = {
|
const preloadedState = {
|
||||||
@@ -714,3 +715,48 @@ describe("Menubar interaction with expanded Dialog", () => {
|
|||||||
expect(container.querySelector(".select-display")).toBeInTheDocument();
|
expect(container.querySelector(".select-display")).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Menubar logout flow", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
localStorage.clear();
|
||||||
|
sessionStorage.clear();
|
||||||
|
jest.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
function renderMenubar(user = { name: "John", email: "test@example.com" }) {
|
||||||
|
const preloadedState = {
|
||||||
|
user: { userData: user },
|
||||||
|
settings: { view: "calendar" },
|
||||||
|
};
|
||||||
|
|
||||||
|
return renderWithProviders(
|
||||||
|
<Menubar
|
||||||
|
calendarRef={{ current: null }}
|
||||||
|
onRefresh={() => {}}
|
||||||
|
currentDate={new Date()}
|
||||||
|
currentView="dayGridMonth"
|
||||||
|
/>,
|
||||||
|
preloadedState
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
it("clears storage before redirecting", async () => {
|
||||||
|
sessionStorage.setItem("tokenSet", "dummy");
|
||||||
|
const logoutSpy = jest
|
||||||
|
.spyOn(oidcAuth, "Logout")
|
||||||
|
.mockResolvedValue(new URL("https://logout.url"));
|
||||||
|
|
||||||
|
await act(async () => {
|
||||||
|
renderMenubar();
|
||||||
|
});
|
||||||
|
await act(async () => {
|
||||||
|
fireEvent.click(screen.getByLabelText("menubar.userProfile"));
|
||||||
|
});
|
||||||
|
await act(async () => {
|
||||||
|
fireEvent.click(screen.getByText("menubar.logout"));
|
||||||
|
});
|
||||||
|
expect(logoutSpy).toHaveBeenCalled();
|
||||||
|
|
||||||
|
expect(sessionStorage.length).toBe(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import {
|
|||||||
vi as viLocale,
|
vi as viLocale,
|
||||||
} from "date-fns/locale";
|
} from "date-fns/locale";
|
||||||
import SearchBar from "./EventSearchBar";
|
import SearchBar from "./EventSearchBar";
|
||||||
|
import { Logout } from "../../features/User/oidcAuth";
|
||||||
const dateLocales = { en: enGB, fr: frLocale, ru: ruLocale, vi: viLocale };
|
const dateLocales = { en: enGB, fr: frLocale, ru: ruLocale, vi: viLocale };
|
||||||
|
|
||||||
export type AppIconProps = {
|
export type AppIconProps = {
|
||||||
@@ -143,8 +144,10 @@ export function Menubar({
|
|||||||
handleUserMenuClose();
|
handleUserMenuClose();
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleLogoutClick = () => {
|
const handleLogoutClick = async () => {
|
||||||
// TODO: Implement logout functionality
|
const logoutUrl = await Logout();
|
||||||
|
sessionStorage.removeItem("tokenSet");
|
||||||
|
window.location.assign(logoutUrl.href);
|
||||||
handleUserMenuClose();
|
handleUserMenuClose();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -344,11 +347,11 @@ export function Menubar({
|
|||||||
<SettingsIcon sx={{ mr: 2 }} />
|
<SettingsIcon sx={{ mr: 2 }} />
|
||||||
{t("menubar.settings") || "Settings"}
|
{t("menubar.settings") || "Settings"}
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
{/* <Divider />
|
<Divider />
|
||||||
<MenuItem onClick={handleLogoutClick} sx={{ py: 1.5 }}>
|
<MenuItem onClick={handleLogoutClick} sx={{ py: 1.5 }}>
|
||||||
<LogoutIcon sx={{ mr: 2 }} />
|
<LogoutIcon sx={{ mr: 2 }} />
|
||||||
{t("menubar.logout") || "Logout"}
|
{t("menubar.logout") || "Logout"}
|
||||||
</MenuItem> */}
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user