57 lines
1.9 KiB
React
57 lines
1.9 KiB
React
// @vitest-environment jsdom
|
|
|
|
import { render, screen } from "@testing-library/react";
|
|
import userEvent from "@testing-library/user-event";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import { createAnonymousSessionAdapter } from "../../src/adapters/auth/external-session-adapter.js";
|
|
import { ApplicationProvider } from "../../src/presentation/providers/application-provider.js";
|
|
import { AppRouter } from "../../src/presentation/routes/app-router.jsx";
|
|
import { createTestApplication } from "../helpers/create-test-application.js";
|
|
|
|
function renderRouter() {
|
|
return render(
|
|
<ApplicationProvider
|
|
application={createTestApplication({
|
|
session: createAnonymousSessionAdapter(),
|
|
})}
|
|
>
|
|
<AppRouter />
|
|
</ApplicationProvider>,
|
|
);
|
|
}
|
|
|
|
describe("generic application router", () => {
|
|
it("renders the app shell and not-found route without a feature input", async () => {
|
|
window.history.pushState({}, "", "/missing");
|
|
renderRouter();
|
|
|
|
expect(
|
|
await screen.findByRole("heading", {
|
|
name: "페이지를 찾을 수 없습니다.",
|
|
}),
|
|
).toBeVisible();
|
|
expect(screen.getByRole("navigation", { name: "주요 탐색" })).toBeVisible();
|
|
expect(screen.getByRole("main")).toBeVisible();
|
|
});
|
|
|
|
it("navigates between registry-backed platform routes", async () => {
|
|
const user = userEvent.setup();
|
|
window.history.pushState({}, "", "/");
|
|
renderRouter();
|
|
|
|
await user.click(
|
|
await screen.findByRole("link", { name: "UI 구성요소" }),
|
|
);
|
|
|
|
expect(
|
|
await screen.findByRole("heading", { name: "UI 구성요소", level: 1 }),
|
|
).toBeVisible();
|
|
expect(window.location.pathname).toBe("/examples/ui");
|
|
expect(document.title).toBe("UI 구성요소 · Frontend Skeleton");
|
|
expect(
|
|
screen.getByRole("heading", { name: "UI 구성요소", level: 1 }),
|
|
).toHaveFocus();
|
|
});
|
|
});
|