import { render, screen, fireEvent } from '@testing-library/react' import { GroupedNav, type GroupedNavEntry } from '../grouped-nav' const items: GroupedNavEntry[] = [ { href: '/', label: 'Dashboard' }, { label: 'Content', items: [ { href: '/t/weekly_brief', label: 'Weekly Briefs' }, { href: '/t/lead_magnet', label: 'Lead Magnets' }, { href: '/t/general', label: 'General' }, ], }, ] describe('GroupedNav', () => { it('renders top-level links and grouped links', () => { render() expect(screen.getByText('Dashboard')).toBeInTheDocument() expect(screen.getByText('Content')).toBeInTheDocument() expect(screen.getByText('Weekly Briefs')).toBeInTheDocument() expect(screen.getByText('General')).toBeInTheDocument() }) it('marks the active link with aria-current=page', () => { render() expect(screen.getByRole('link', { name: 'Lead Magnets' })).toHaveAttribute('aria-current', 'page') expect(screen.getByRole('link', { name: 'Weekly Briefs' })).not.toHaveAttribute('aria-current') }) it('treats a child path as active for its link', () => { render() expect(screen.getByRole('link', { name: 'General' })).toHaveAttribute('aria-current', 'page') }) it('collapses and expands a group on heading click', () => { render() expect(screen.getByText('Weekly Briefs')).toBeInTheDocument() fireEvent.click(screen.getByRole('button', { name: /Content/ })) expect(screen.queryByText('Weekly Briefs')).not.toBeInTheDocument() fireEvent.click(screen.getByRole('button', { name: /Content/ })) expect(screen.getByText('Weekly Briefs')).toBeInTheDocument() }) it('forces a collapsed group open when one of its children is active', () => { const collapsed: GroupedNavEntry[] = [ { label: 'Content', defaultOpen: false, items: [{ href: '/t/general', label: 'General' }] }, ] render() // defaultOpen=false but the active child forces it visible expect(screen.getByText('General')).toBeInTheDocument() }) it('uses a custom renderLink (e.g. a router Link)', () => { render( ( {link.label} )} />, ) const link = screen.getByText('Weekly Briefs') expect(link).toHaveAttribute('data-router-link', '1') }) })