import { describe, expect, it } from 'vitest'; import { breadcrumbRoutes } from '../breadcrumbs'; const expectedRoutes = [ '/', '/entregaveis', '/entregaveis/:id', '/ordens-servico', '/sprints', '/profissionais', '/usuarios', '/usuarios/novo', '/usuarios/:id/editar', '/clientes', '/configuracoes', ]; describe('breadcrumbRoutes', () => { it('cobre todas as rotas do sistema', () => { const patterns = breadcrumbRoutes.map((r) => r.pattern); for (const route of expectedRoutes) { expect(patterns).toContain(route); } }); it('cada configuração tem pelo menos um item', () => { for (const route of breadcrumbRoutes) { expect(route.items.length).toBeGreaterThanOrEqual(1); } }); it('último item de cada configuração não tem "to"', () => { for (const route of breadcrumbRoutes) { const lastItem = route.items[route.items.length - 1]; expect(lastItem.to).toBeUndefined(); } }); it('rotas com parâmetros usam padrão :param', () => { const dynamicRoutes = breadcrumbRoutes.filter((r) => r.pattern.includes(':')); expect(dynamicRoutes.length).toBeGreaterThan(0); for (const route of dynamicRoutes) { expect(route.pattern).toMatch(/:\w+/); } }); it('Dashboard é sempre a raiz dos breadcrumbs', () => { for (const route of breadcrumbRoutes) { expect(route.items[0].label).toBe('Dashboard'); } }); it('página Dashboard não tem link no item', () => { const dashboardRoute = breadcrumbRoutes.find((r) => r.pattern === '/'); expect(dashboardRoute?.items[0].to).toBeUndefined(); }); it('não inclui rotas de autenticação', () => { const patterns = breadcrumbRoutes.map((r) => r.pattern); expect(patterns).not.toContain('/login'); expect(patterns).not.toContain('/trocar-senha'); }); });