const test = require('node:test'); const assert = require('node:assert/strict'); const {allowed, apply} = require('../static/js/menu-access.js'); test('group permissions show only accessible workflow sections', () => { const reader = {permissions: ['workflows.view']}; assert.equal(allowed(reader, 'workflows.view'), true); assert.equal(allowed(reader, 'workflows.view,workflows.manage'), false); assert.equal(allowed(reader, 'system.admin'), false); assert.equal(allowed(reader, 'workflows.view|system.admin'), true); assert.equal(allowed({permissions: ['system.admin']}, 'workflows.view|system.admin'), true); assert.equal(allowed({is_superadmin: true}, 'workflows.manage'), true); assert.equal(allowed(null, 'workflows.view'), false); }); test('permission updates do not overwrite personal menu preferences', () => { const node = {dataset: {menuPermission: 'workflows.view'}, hidden: true, attributes: new Set(['data-access-denied']), toggleAttribute(name, enabled) { enabled ? this.attributes.add(name) : this.attributes.delete(name); }}; const document = {querySelectorAll: () => [node]}; apply({permissions: ['workflows.view']}, document); assert.equal(node.attributes.has('data-access-denied'), false); assert.equal(node.hidden, true); apply({permissions: []}, document); assert.equal(node.attributes.has('data-access-denied'), true); assert.equal(node.hidden, true); });