39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { buildModules } from './modules.js';
|
|
|
|
function moduleIds(roles?: string[]): string[] {
|
|
return buildModules('asset', roles).map(module => module.id);
|
|
}
|
|
|
|
function heatmapChildIds(roles?: string[]): string[] {
|
|
const heatmap = buildModules('asset', roles).find(module => module.id === 'heatmap');
|
|
return heatmap?.children?.map(module => module.id) ?? [];
|
|
}
|
|
|
|
test('keeps the base asset navigation and role-gated scheduling module', () => {
|
|
assert.deepEqual(moduleIds(), ['assets', 'mileage', 'heatmap']);
|
|
assert.deepEqual(moduleIds(['BI-SCHEDULE-OPT']), [
|
|
'assets',
|
|
'mileage',
|
|
'heatmap',
|
|
'scheduling',
|
|
]);
|
|
});
|
|
|
|
test('keeps energy heatmap visibility and the independent energy navigation', () => {
|
|
assert.deepEqual(heatmapChildIds(), ['vehicle-heatmap']);
|
|
assert.deepEqual(heatmapChildIds(['BI-LEADER-ENERGY']), [
|
|
'hydrogen-heatmap',
|
|
'vehicle-heatmap',
|
|
]);
|
|
assert.deepEqual(heatmapChildIds(['所有权限']), [
|
|
'hydrogen-heatmap',
|
|
'vehicle-heatmap',
|
|
]);
|
|
assert.deepEqual(
|
|
buildModules('energy', []).map(module => module.id),
|
|
['hydrogen', 'electric', 'etc'],
|
|
);
|
|
});
|