import { policyRoutes, primaryMenuRoutes, requiredPageRoutes, toolkitRoutes, routeDefinitions, normalizeRouteName, } from '../src/navigation/routes'; describe('routeDefinitions', () => { it('defines every required page with labels and titles', () => { expect(requiredPageRoutes).toEqual([ 'home', 'newGame', 'saves', 'settings', 'policiesLegal', 'policiesPrivacy', 'policiesTerms', 'policiesCookies', 'credits', 'toolkit', 'toolkitOpening', 'toolkitPetitioners', 'toolkitRulings', 'toolkitSeed', 'toolkitResources', 'toolkitMap', 'toolkitFactions', 'toolkitFlags', 'toolkitStory', 'toolkitLore', 'toolkitAudio', 'toolkitCredits', 'toolkitEndings', 'toolkitReferences', ]); for (const routeName of requiredPageRoutes) { expect(routeDefinitions[routeName].label.length).toBeGreaterThan(0); expect(routeDefinitions[routeName].title.length).toBeGreaterThan(0); } }); it('exposes home menu and policy submenu routes', () => { expect(primaryMenuRoutes).toEqual([ 'newGame', 'saves', 'settings', 'policies', 'credits', 'toolkit', ]); expect(policyRoutes).toEqual([ 'policiesLegal', 'policiesPrivacy', 'policiesTerms', 'policiesCookies', ]); expect(toolkitRoutes).toEqual([ 'toolkitOpening', 'toolkitPetitioners', 'toolkitRulings', 'toolkitSeed', 'toolkitResources', 'toolkitMap', 'toolkitFactions', 'toolkitFlags', 'toolkitStory', 'toolkitLore', 'toolkitAudio', 'toolkitCredits', 'toolkitEndings', 'toolkitReferences', ]); }); it('normalizes stale persisted toolkit routes', () => { expect(normalizeRouteName('toolkitOpeningSequence')).toBe('toolkit'); expect(normalizeRouteName('not-a-route')).toBe('home'); expect(normalizeRouteName('toolkitPetitioners')).toBe('toolkitPetitioners'); expect(normalizeRouteName('toolkitCredits')).toBe('toolkitCredits'); }); });