| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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',
- ];
- 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, 8, 'same lesson IDs must not collide across modules');
- assert.deepEqual(parseCourseQuery(''), { module: 'api', lesson: undefined });
- 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: legacy links, 8 module round-trips, overview routes and query encoding passed.',
- );
|