import assert from 'node:assert/strict'; import { courseHref, parseCourseQuery } from '../app/course-navigation.ts'; assert.equal(courseHref('api', '01'), '?lesson=01'); assert.deepEqual(parseCourseQuery('?lesson=01'), { module: 'api', lesson: '01', }); const slugs = [ 'api', 'database', 'api-database', 'tasks', 'redis', 'docker', 'linux', 'troubleshooting', 'distributed', 'review', ]; const urls = new Set(); for (const slug of slugs) { const url = courseHref(slug, '01'); urls.add(url); assert.deepEqual(parseCourseQuery(url), { module: slug, lesson: '01' }); assert.deepEqual(parseCourseQuery(courseHref(slug)), { module: slug, lesson: undefined, }); } assert.equal(urls.size, 10, 'same lesson IDs must not collide across modules'); assert.deepEqual(parseCourseQuery(''), { module: 'home', lesson: undefined }); assert.deepEqual(parseCourseQuery(courseHref('home')), { module: 'home', lesson: undefined, }); assert.equal(courseHref('home'), '?'); assert.deepEqual(parseCourseQuery('?module=api'), { module: 'api', lesson: undefined, }); assert.deepEqual(parseCourseQuery('?module=home&lesson=01'), { module: 'home', lesson: '01', }); assert.deepEqual(parseCourseQuery('?module=database&lesson=99'), { module: 'database', lesson: '99', }); assert.equal( courseHref('tasks', '01&module=api'), '?module=tasks&lesson=01%26module%3Dapi', ); console.log( 'Course navigation: homepage, legacy links, 10 module round-trips, overview routes and query encoding passed.', );