64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
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');
|
|
});
|
|
});
|