import { describe, expect, it } from 'vitest' import { createNavbar } from './navbar.js' import type { Page } from './page.js' const createPage = (path: string[], fileName = 'index', hidden = false): Page => ({ route: { id: path.join('/'), parentId: path.length > 1 ? path.slice(0, -1).join('/') : null, logical: { path }, file: { path: { absolute: { root: '/', dir: `/pages/${path.join('/')}`, base: `${fileName}.md`, ext: '.md', name: fileName }, relative: { root: '', dir: path.join('/'), base: `${fileName}.md`, ext: '.md', name: fileName }, }, }, }, metadata: { description: undefined, hidden }, }) describe('createNavbar', () => { it('returns empty for empty input', () => { expect(createNavbar([])).toEqual([]) }) it('excludes hidden pages', () => { const pages = [createPage(['visible'], 'index', false), createPage(['hidden'], 'index', true)] const result = createNavbar(pages) expect(result).toEqual([{ pathExp: '/visible', title: 'Visible' }]) }) it('includes directories with index pages', () => { const pages = [createPage(['guide'], 'index'), createPage(['guide', 'intro'], 'intro')] const result = createNavbar(pages) expect(result).toEqual([{ pathExp: '/guide', title: 'Guide' }]) }) it('excludes directories without index pages', () => { const pages = [createPage(['guide', 'intro'], 'intro')] const result = createNavbar(pages) expect(result).toEqual([]) }) it('includes single top-level pages', () => { const pages = [createPage(['about'], 'about')] const result = createNavbar(pages) expect(result).toEqual([{ pathExp: '/about', title: 'About' }]) }) it('sorts results alphabetically', () => { const pages = [createPage(['zebra'], 'zebra'), createPage(['alpha'], 'alpha')] const result = createNavbar(pages) expect(result[0]!.title).toBe('Alpha') expect(result[1]!.title).toBe('Zebra') }) })