fabro/apps/fabro-web/app/router.test.tsx
Bryan Helmkamp a508ee3d2e
feat(web): regroup settings nav under General and Administration
Group sidebar items under General and Administration section labels;
default Settings landing page to Models; rename General page to Server
(now at /settings/server); rename Resources to Monitoring (now at
/settings/monitoring) with ChartBarSquare icon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 14:56:01 -04:00

41 lines
1.2 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import type { RouteObject } from "react-router";
import { routes } from "./router";
function collectPaths(routeObjects: RouteObject[], prefix = ""): string[] {
return routeObjects.flatMap((route) => {
const path = route.index
? prefix || "/"
: route.path
? route.path.startsWith("/")
? route.path
: `${prefix}/${route.path}`.replace(/\/+/g, "/")
: prefix;
const childPaths = route.children ? collectPaths(route.children, path) : [];
return route.path || route.index ? [path, ...childPaths] : childPaths;
});
}
describe("browser router", () => {
test("uses /login for the sign-in page instead of the backend auth namespace", () => {
const paths = collectPaths(routes);
expect(paths).toContain("/login");
expect(paths).not.toContain("/auth/login");
});
test("exposes /setup but not the removed /setup/complete route", () => {
const paths = collectPaths(routes);
expect(paths).toContain("/setup");
expect(paths).not.toContain("/setup/complete");
});
test("exposes the monitoring settings page", () => {
const paths = collectPaths(routes);
expect(paths).toContain("/settings/monitoring");
});
});