import { render } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import Logout from "../page"; // mocking related hooks const mockUseLogout = vi.fn(() => ({ handleLogout: vi.fn(), isPending: false, })); vi.mock("../hooks/useLogout", () => ({ useLogout: () => mockUseLogout(), })); describe("Logout component", () => { it("should render correctly", () => { const { getByTestId } = render(); const logoutPage = getByTestId("logout-page"); expect(logoutPage).toBeDefined(); }); it("should call handleLogout 1 time when logout button is clicked", () => { const mockHandleLogout = vi.fn(); mockUseLogout.mockReturnValue({ handleLogout: mockHandleLogout, isPending: false, }); const { getByTestId } = render(); const logoutButton = getByTestId("logout-button"); logoutButton.click(); expect(mockHandleLogout).toHaveBeenCalledTimes(1); }); it("should not call handleLogout when isPending is true", () => { const mockHandleLogout = vi.fn(); mockUseLogout.mockReturnValue({ handleLogout: mockHandleLogout, isPending: true, }); const { getByTestId } = render(); const logoutButton = getByTestId("logout-button"); logoutButton.click(); expect(mockHandleLogout).toHaveBeenCalledTimes(0); }); });