import { beforeEach, describe, expect, it, vi } from "vitest"; import { render, screen } from "../../../../../../test/src/react-render.js"; import { useSocialProfiles } from "../../../../core/social/useSocialProfiles.js"; import { useProfiles } from "../../../hooks/wallets/useProfiles.js"; import { LinkedProfilesScreen } from "./LinkedProfilesScreen.jsx"; // Mock the hooks vi.mock("../../../hooks/wallets/useProfiles"); vi.mock("../../../../core/social/useSocialProfiles"); vi.mock("../../components/Img", () => ({ Img: () =>
Mock Image
, })); describe("LinkedProfilesScreen", () => { const mockClient = { clientId: "test-client-id", secretKey: undefined, }; const mockProps = { client: mockClient, locale: { manageWallet: { linkedProfiles: "Linked Profiles", linkProfile: "Link Profile", }, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any, onBack: vi.fn(), setScreen: vi.fn(), }; beforeEach(() => { vi.mocked(useSocialProfiles).mockReturnValue({ data: undefined, isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); }); describe("getProfileDisplayName", () => { it("should display email for email profile type", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: { email: "test@example.com" }, type: "email" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("test@example.com")).toBeInTheDocument(); }); it("should display email for google profile type", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: { email: "google@example.com" }, type: "google" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("google@example.com")).toBeInTheDocument(); }); it("should display phone number for phone profile type", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: { phone: "+1234567890" }, type: "phone" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("+1234567890")).toBeInTheDocument(); }); it("should display shortened address when address is present", () => { vi.mocked(useProfiles).mockReturnValue({ data: [ { details: { address: "0x1234567890abcdef1234567890abcdef12345678" }, type: "wallet", }, ], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("0x123456...345678")).toBeInTheDocument(); }); it("should display email for cognito profile type", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: { email: "cognito@example.com" }, type: "cognito" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("cognito@example.com")).toBeInTheDocument(); }); it("should capitalize unknown profile types", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: {}, type: "unknown" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("Unknown")).toBeInTheDocument(); }); it("should not display guest profiles", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: {}, type: "guest" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.queryByText("Guest")).not.toBeInTheDocument(); }); it("should render unlink button when there are multiple profiles", () => { vi.mocked(useProfiles).mockReturnValue({ data: [ { details: { email: "test@example.com" }, type: "email" }, { details: { email: "google@example.com" }, type: "google" }, ], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getAllByLabelText("Unlink")).toHaveLength(2); }); it("should not render unlink button when there is only one profile", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: { email: "test@example.com" }, type: "email" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.queryByLabelText("Unlink")).not.toBeInTheDocument(); }); it("should not display custom_jwt profiles", () => { vi.mocked(useProfiles).mockReturnValue({ data: [{ details: {}, type: "custom_jwt" }], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.queryByText("Custom_jwt")).not.toBeInTheDocument(); }); it("should display profiles that are not guest or custom_jwt", () => { vi.mocked(useProfiles).mockReturnValue({ data: [ { details: { email: "test@example.com" }, type: "email" }, { details: {}, type: "custom_jwt" }, { details: {}, type: "guest" }, ], isLoading: false, // biome-ignore lint/suspicious/noExplicitAny: Mocking data } as any); render(); expect(screen.getByText("test@example.com")).toBeInTheDocument(); expect(screen.queryByText("Custom_jwt")).not.toBeInTheDocument(); expect(screen.queryByText("Guest")).not.toBeInTheDocument(); }); }); });