diff options
Diffstat (limited to 'src/client/App.test.tsx')
| -rw-r--r-- | src/client/App.test.tsx | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/client/App.test.tsx b/src/client/App.test.tsx new file mode 100644 index 0000000..cd448bf --- /dev/null +++ b/src/client/App.test.tsx @@ -0,0 +1,47 @@ +/** + * @vitest-environment jsdom + */ +import { cleanup, render, screen } from "@testing-library/react"; +import { afterEach, describe, expect, it } from "vitest"; +import { Router } from "wouter"; +import { memoryLocation } from "wouter/memory-location"; +import { App } from "./App"; + +function renderWithRouter(path: string) { + const { hook } = memoryLocation({ path, static: true }); + return render( + <Router hook={hook}> + <App /> + </Router>, + ); +} + +afterEach(() => { + cleanup(); +}); + +describe("App routing", () => { + it("renders home page at /", () => { + renderWithRouter("/"); + expect(screen.getByRole("heading", { name: "Kioku" })).toBeDefined(); + expect(screen.getByText("Spaced repetition learning app")).toBeDefined(); + }); + + it("renders login page at /login", () => { + renderWithRouter("/login"); + expect(screen.getByRole("heading", { name: "Login" })).toBeDefined(); + }); + + it("renders register page at /register", () => { + renderWithRouter("/register"); + expect(screen.getByRole("heading", { name: "Register" })).toBeDefined(); + }); + + it("renders 404 page for unknown routes", () => { + renderWithRouter("/unknown-route"); + expect( + screen.getByRole("heading", { name: "404 - Not Found" }), + ).toBeDefined(); + expect(screen.getByRole("link", { name: "Go to Home" })).toBeDefined(); + }); +}); |
