import { render, screen } from "@testing-library/react"; import { afterEach, describe, expect, it, vi } from "vitest"; import userEvent from "@testing-library/user-event"; import { createRoutesStub } from "react-router"; import { LoginCTA } from "#/components/features/auth/login-cta"; vi.mock("#/hooks/use-client-analytics", () => ({ useClientAnalytics: () => ({ trackEnterpriseCTAClicked: vi.fn(), trackEnterpriseLeadFormSubmitted: vi.fn(), }), })); describe("LoginCTA", () => { afterEach(() => { vi.clearAllMocks(); }); const renderWithRouter = (source?: "login_page" | "device_verify") => { const Stub = createRoutesStub([ { path: "/", Component: () => , }, { path: "/information-request", Component: () =>
, }, ]); return render(); }; it("should render enterprise CTA with title and description", () => { renderWithRouter(); expect(screen.getByTestId("login-cta")).toBeInTheDocument(); expect(screen.getByText("CTA$ENTERPRISE")).toBeInTheDocument(); expect(screen.getByText("CTA$ENTERPRISE_DEPLOY")).toBeInTheDocument(); }); it("should render all enterprise feature list items", () => { renderWithRouter(); expect(screen.getByText("CTA$FEATURE_ON_PREMISES")).toBeInTheDocument(); expect(screen.getByText("CTA$FEATURE_DATA_CONTROL")).toBeInTheDocument(); expect(screen.getByText("CTA$FEATURE_COMPLIANCE")).toBeInTheDocument(); expect(screen.getByText("CTA$FEATURE_SUPPORT")).toBeInTheDocument(); }); it("should navigate to information request page when Learn More is clicked", async () => { const user = userEvent.setup(); renderWithRouter(); const learnMoreLink = screen.getByRole("link", { name: "CTA$LEARN_MORE", }); await user.click(learnMoreLink); expect(screen.getByTestId("information-request-page")).toBeInTheDocument(); }); it("should render Learn More as a link for Open in New Tab support", () => { renderWithRouter(); const learnMoreLink = screen.getByRole("link", { name: "CTA$LEARN_MORE", }); expect(learnMoreLink).toHaveAttribute( "href", "/information-request", ); }); it("should render external enterprise URL in device verify mode", () => { renderWithRouter("device_verify"); const learnMoreLink = screen.getByRole("link", { name: "CTA$LEARN_MORE", }); expect(learnMoreLink).toHaveAttribute( "href", "https://wren.dev/enterprise", ); expect(learnMoreLink).toHaveAttribute("target", "_blank"); expect(learnMoreLink).toHaveAttribute("rel", "noopener noreferrer"); }); });