24 lines
1.5 KiB
JavaScript
24 lines
1.5 KiB
JavaScript
'use strict';
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { SETTINGS_SECTIONS, SCRAPER_TABS, settingsRoute } = require('../public/settings-nav');
|
|
|
|
test('settings organize unique routes into User and Admin, with scraper-local tabs', () => {
|
|
assert.equal(new Set(SETTINGS_SECTIONS.map(s => s.id)).size, SETTINGS_SECTIONS.length);
|
|
assert.deepEqual([...new Set(SETTINGS_SECTIONS.map(s => s.group))], ['User', 'Admin']);
|
|
assert.ok(SETTINGS_SECTIONS.every(s => s.id.split('/').length === 2));
|
|
assert.deepEqual(SCRAPER_TABS, ['activity', 'queue', 'updates', 'sources']);
|
|
for (const section of SETTINGS_SECTIONS) assert.equal(settingsRoute('#' + section.id, true).id, section.id);
|
|
});
|
|
|
|
test('settings deep links default safely and never route ordinary readers into admin', () => {
|
|
assert.deepEqual(settingsRoute('', false), { id: 'user/reading', tab: 'activity' });
|
|
assert.equal(settingsRoute('#not/a/section', true).id, 'user/reading');
|
|
assert.equal(settingsRoute('#admin/users', false).id, 'user/reading');
|
|
assert.equal(settingsRoute('#admin/scraper/hosters', false).id, 'user/reading');
|
|
assert.equal(settingsRoute('#user/notifications', false).id, 'user/notifications');
|
|
assert.deepEqual(settingsRoute('#admin/scraper/hosters', true), { id: 'admin/scraper', tab: 'sources' });
|
|
assert.deepEqual(settingsRoute('#admin/scraper/sources', true), { id: 'admin/scraper', tab: 'sources' });
|
|
assert.equal(settingsRoute('#admin/scraper/unknown', true).tab, 'activity');
|
|
});
|