clean routes
This commit is contained in:
119
apps/website/lib/auth/RouteCatalog.test.ts
Normal file
119
apps/website/lib/auth/RouteCatalog.test.ts
Normal file
@@ -0,0 +1,119 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { RouteCatalog } from './RouteCatalog';
|
||||
|
||||
describe('RouteCatalog', () => {
|
||||
describe('constructor', () => {
|
||||
it('should create an instance without errors', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
expect(catalog).toBeInstanceOf(RouteCatalog);
|
||||
});
|
||||
});
|
||||
|
||||
describe('listPublicRoutes()', () => {
|
||||
it('should return array of public route IDs', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const publicRoutes = catalog.listPublicRoutes();
|
||||
|
||||
expect(Array.isArray(publicRoutes)).toBe(true);
|
||||
expect(publicRoutes.length).toBeGreaterThan(0);
|
||||
expect(publicRoutes).toContain('auth.login');
|
||||
expect(publicRoutes).toContain('public.home');
|
||||
expect(publicRoutes).toContain('error.notFound');
|
||||
});
|
||||
});
|
||||
|
||||
describe('listProtectedRoutes()', () => {
|
||||
it('should return array of protected route IDs', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const protectedRoutes = catalog.listProtectedRoutes();
|
||||
|
||||
expect(Array.isArray(protectedRoutes)).toBe(true);
|
||||
expect(protectedRoutes.length).toBeGreaterThan(0);
|
||||
expect(protectedRoutes).toContain('protected.dashboard');
|
||||
expect(protectedRoutes).toContain('protected.profile');
|
||||
expect(protectedRoutes).toContain('sponsor.dashboard');
|
||||
});
|
||||
});
|
||||
|
||||
describe('getPattern()', () => {
|
||||
it('should return pattern for simple route ID', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const pattern = catalog.getPattern('auth.login');
|
||||
|
||||
expect(pattern).toBe('/auth/login');
|
||||
});
|
||||
|
||||
it('should return pattern for protected route', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const pattern = catalog.getPattern('protected.dashboard');
|
||||
|
||||
expect(pattern).toBe('/dashboard');
|
||||
});
|
||||
|
||||
it('should return pattern for public route', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const pattern = catalog.getPattern('public.leagues');
|
||||
|
||||
expect(pattern).toBe('/leagues');
|
||||
});
|
||||
|
||||
it('should throw error for unknown route ID', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
|
||||
expect(() => catalog.getPattern('unknown.route')).toThrow('Unknown route ID: unknown.route');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isAuthPage()', () => {
|
||||
it('should return true for auth pages', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
|
||||
expect(catalog.isAuthPage('/auth/login')).toBe(true);
|
||||
expect(catalog.isAuthPage('/auth/signup')).toBe(true);
|
||||
expect(catalog.isAuthPage('/auth/forgot-password')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for non-auth pages', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
|
||||
expect(catalog.isAuthPage('/dashboard')).toBe(false);
|
||||
expect(catalog.isAuthPage('/leagues')).toBe(false);
|
||||
expect(catalog.isAuthPage('/')).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAllPatterns()', () => {
|
||||
it('should return all route patterns', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const patterns = catalog.getAllPatterns();
|
||||
|
||||
expect(Array.isArray(patterns)).toBe(true);
|
||||
expect(patterns.length).toBeGreaterThan(0);
|
||||
expect(patterns.some(p => p.routeId === 'auth.login')).toBe(true);
|
||||
expect(patterns.some(p => p.routeId === 'protected.dashboard')).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getRouteIdByPath()', () => {
|
||||
it('should return route ID for exact match', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const routeId = catalog.getRouteIdByPath('/auth/login');
|
||||
|
||||
expect(routeId).toBe('auth.login');
|
||||
});
|
||||
|
||||
it('should return route ID for protected path', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const routeId = catalog.getRouteIdByPath('/dashboard');
|
||||
|
||||
expect(routeId).toBe('protected.dashboard');
|
||||
});
|
||||
|
||||
it('should return null for unknown path', () => {
|
||||
const catalog = new RouteCatalog();
|
||||
const routeId = catalog.getRouteIdByPath('/unknown/path');
|
||||
|
||||
expect(routeId).toBeNull();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user