const test = require('node:test'); const assert = require('node:assert/strict'); require('../src/common'); const packageJson = require('../package.json'); const pages = require('../src/web/pages'); const registerAboutRoutes = require('../src/web/routes/settings/about/routes'); const renderAboutPage = require('../src/web/routes/settings/about'); test('about page renders the footer link beside the version and lists bundled libraries', () => { const html = pages.renderAboutPage({ id: 1 }); const libraries = renderAboutPage.buildLibraryList(); const orderedNames = libraries.map(function (library) { return library.name; }); let previousIndex = -1; orderedNames.forEach(function (name) { const currentIndex = html.indexOf(name); assert.ok(currentIndex >= 0, `missing ${name}`); assert.ok(currentIndex > previousIndex, `${name} is out of order`); previousIndex = currentIndex; }); assert.match(html, new RegExp('v' + packageJson.version.split('.').join('\\.'))); assert.match(html, /About Pulse/); assert.match(html, /href="\/settings\/about"/); libraries.forEach(function (library) { assert.ok(library.version, `${library.name} version is missing`); assert.match(html, new RegExp(`>${library.version}<`)); }); assert.match(html, /card card-outline card-primary h-100 overflow-hidden/); assert.doesNotMatch(html, /rounded-3 overflow-hidden border/); }); test('about route sends the about page', async () => { const handlers = {}; const app = { get(path, ...routeHandlers) { handlers[path] = routeHandlers; } }; registerAboutRoutes(app, { pages: { renderAboutPage(currentUser) { return currentUser && currentUser.id === 7 ? 'about-page' : 'unexpected'; } } }); const response = { body: null, send(value) { this.body = value; return this; } }; await handlers['/settings/about'][0]({ currentUser: { id: 7 } }, response, function () {}); assert.equal(response.body, 'about-page'); });