d8cd05b228
Replace the floating bottom navigation with a full-width tab bar. Add splash press feedback and a neutral private room background.
81 lines
2.6 KiB
TypeScript
81 lines
2.6 KiB
TypeScript
import { renderToStaticMarkup } from "react-dom/server";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import { SplashBackground } from "../splash-background";
|
|
import { SplashButton } from "../splash-button";
|
|
import { SplashContent } from "../splash-content";
|
|
import { SplashLogo } from "../splash-logo";
|
|
|
|
const authStateMock = vi.hoisted(() => ({
|
|
value: {
|
|
authPanelMode: "facebook",
|
|
isLoading: false,
|
|
errorMessage: null,
|
|
loginStatus: "notLoggedIn",
|
|
hasInitialized: true,
|
|
},
|
|
}));
|
|
|
|
vi.mock("@/stores/auth/auth-context", () => ({
|
|
useAuthState: () => authStateMock.value,
|
|
}));
|
|
|
|
describe("splash Tailwind components", () => {
|
|
it("renders SplashLogo with Tailwind wrapper and image classes", () => {
|
|
const html = renderToStaticMarkup(<SplashLogo />);
|
|
|
|
expect(html).toContain("z-2");
|
|
expect(html).toContain("inline-flex");
|
|
expect(html).toContain("block h-auto w-auto");
|
|
expect(html).toContain("%2Fimages%2Fsplash%2Fic-logo-home.png");
|
|
});
|
|
|
|
it("renders SplashBackground with Tailwind fill image classes", () => {
|
|
const html = renderToStaticMarkup(<SplashBackground />);
|
|
|
|
expect(html).toContain("absolute");
|
|
expect(html).toContain("bg-sidebar-background");
|
|
expect(html).toContain("object-cover");
|
|
expect(html).toContain("%2Fimages%2Fsplash%2Fpic-bg-home.png");
|
|
});
|
|
|
|
it("renders SplashContent with Tailwind typography classes", () => {
|
|
const html = renderToStaticMarkup(<SplashContent />);
|
|
|
|
expect(html).toContain("flex flex-col gap-md");
|
|
expect(html).toContain("font-(family-name:--font-athelas)");
|
|
expect(html).toContain("whitespace-pre-line");
|
|
expect(html).toContain("Welcome to my secret hideout");
|
|
});
|
|
|
|
it("renders SplashButton ready and loading states", () => {
|
|
authStateMock.value = {
|
|
...authStateMock.value,
|
|
hasInitialized: true,
|
|
isLoading: false,
|
|
};
|
|
const readyHtml = renderToStaticMarkup(
|
|
<SplashButton onStartChat={() => undefined} />,
|
|
);
|
|
|
|
authStateMock.value = {
|
|
...authStateMock.value,
|
|
hasInitialized: false,
|
|
isLoading: false,
|
|
};
|
|
const loadingHtml = renderToStaticMarkup(
|
|
<SplashButton onStartChat={() => undefined} />,
|
|
);
|
|
|
|
expect(readyHtml).toContain("z-2");
|
|
expect(readyHtml).toContain("max-w-120");
|
|
expect(readyHtml).toContain("bg-[linear-gradient(to_right");
|
|
expect(readyHtml).toContain("active:enabled:scale-96");
|
|
expect(readyHtml).toContain("active:enabled:brightness-90");
|
|
expect(readyHtml).toContain("touch-manipulation");
|
|
expect(readyHtml).toContain("Start Chatting");
|
|
expect(loadingHtml).toContain("disabled");
|
|
expect(loadingHtml).toContain("animate-spin");
|
|
});
|
|
});
|