import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it, vi } from "vitest"; import { AuthBackground } from "../auth-background"; import { AuthErrorMessage } from "../auth-error-message"; import { AuthLegalText } from "../auth-legal-text"; import { AuthSocialButton } from "../auth-social-button"; import { AuthTextField } from "../auth-text-field"; import { EmailLoginForm } from "../email-login-form"; import { EmailRegisterForm } from "../email-register-form"; vi.mock("@/stores/auth/auth-context", () => ({ useAuthDispatch: () => vi.fn(), })); describe("auth Tailwind components", () => { it("renders AuthErrorMessage only when a message is present", () => { expect(renderToStaticMarkup()).toBe(""); const html = renderToStaticMarkup(); expect(html).toContain('role="alert"'); expect(html).toContain("text-error"); expect(html).toContain("Invalid email"); }); it("renders EmailLoginForm with Tailwind form layout", () => { const html = renderToStaticMarkup(); expect(html).toContain(" { const html = renderToStaticMarkup(); expect(html).toContain(" { const html = renderToStaticMarkup(); expect(html).toContain("absolute"); expect(html).toContain("inset-0"); expect(html).toContain("bg-[#fbf1f2]"); expect(html).toContain("object-cover"); expect(html).toContain("%2Fimages%2Fauth%2Fbg-login.png"); }); it("renders AuthSocialButton with Tailwind button layout", () => { const html = renderToStaticMarkup( G}>Continue, ); expect(html).toContain("min-h-[var(--auth-social-button-height)]"); expect(html).toContain("border-auth-border"); expect(html).toContain("text-auth-text-primary"); expect(html).toContain("Continue"); }); it("renders AuthLegalText with Tailwind checkbox and links", () => { const html = renderToStaticMarkup(); expect(html).toContain('aria-label="Agree to terms"'); expect(html).toContain("size-[var(--auth-legal-checkbox-size)]"); expect(html).toContain("bg-auth-legal-check"); expect(html).toContain("Privacy Agreement"); expect(html).toContain("Terms of User"); }); it("renders AuthTextField with Tailwind input states", () => { const html = renderToStaticMarkup( {}} label="Email" placeholder="Email" errorMessage="Invalid email" />, ); expect(html).toContain("min-h-[var(--auth-field-height)]"); expect(html).toContain("placeholder:text-auth-input-placeholder"); expect(html).toContain("text-auth-text-primary"); expect(html).toContain("Invalid email"); }); });