import { describe, it, expect } from 'vitest';
import { buildBreadcrumbs } from '@/components/layout/BreadcrumbBar';
import { navItems } from '@/lib/constants/navigation';
import type { NavItem } from '@/lib/constants/navigation';

describe('buildBreadcrumbs', () => {
  const items = [...navItems] as NavItem[];

  it('always starts with "Dashboards" as root segment', () => {
    const result = buildBreadcrumbs('/overview', items);
    expect(result[0]).toEqual({ label: 'Dashboards', href: '/overview' });
  });

  it('maps known path to nav item label', () => {
    const result = buildBreadcrumbs('/income', items);
    expect(result).toHaveLength(2);
    expect(result[1]).toEqual({ label: 'Income', href: '/income' });
  });

  it('falls back to capitalized path segment for unknown paths', () => {
    const result = buildBreadcrumbs('/unknown', items);
    expect(result).toHaveLength(2);
    expect(result[1]).toEqual({ label: 'Unknown', href: '/unknown' });
  });

  it('handles root pathname with only "Dashboards" segment', () => {
    const result = buildBreadcrumbs('/', items);
    expect(result).toHaveLength(1);
    expect(result[0].label).toBe('Dashboards');
  });

  it('handles multi-segment paths', () => {
    const result = buildBreadcrumbs('/overview/details', items);
    expect(result).toHaveLength(3);
    expect(result[0].label).toBe('Dashboards');
    expect(result[1].label).toBe('Overview');
    expect(result[2].label).toBe('Details');
  });

  it('maps all known nav items correctly', () => {
    for (const item of items) {
      const result = buildBreadcrumbs(item.href, items);
      const lastSegment = result[result.length - 1];
      expect(lastSegment.label).toBe(item.label);
    }
  });
});
