Files
DashBoard/frontend/tests/shell-navigation.test.js

90 lines
2.4 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {
isPortalShellRuntime,
navigateToRuntimeRoute,
toRuntimeRoute,
} from '../src/core/shell-navigation.js';
test('isPortalShellRuntime detects portal-shell path prefix', () => {
assert.equal(isPortalShellRuntime('/portal-shell'), true);
assert.equal(isPortalShellRuntime('/portal-shell/wip-overview'), true);
assert.equal(isPortalShellRuntime('/wip-overview'), false);
});
test('toRuntimeRoute keeps legacy route outside shell runtime', () => {
assert.equal(
toRuntimeRoute('/wip-overview?status=run', { currentPathname: '/wip-overview' }),
'/wip-overview?status=run',
);
});
test('toRuntimeRoute prefixes target route inside shell runtime', () => {
assert.equal(
toRuntimeRoute('/wip-overview?status=run', { currentPathname: '/portal-shell/wip-overview' }),
'/portal-shell/wip-overview?status=run',
);
});
test('toRuntimeRoute avoids double-prefix for already-prefixed path', () => {
assert.equal(
toRuntimeRoute('/portal-shell/wip-overview', { currentPathname: '/portal-shell' }),
'/portal-shell/wip-overview',
);
});
test('navigateToRuntimeRoute uses shell router bridge in portal runtime', () => {
const originalWindow = globalThis.window;
const calls = [];
globalThis.window = {
location: {
pathname: '/portal-shell/wip-overview',
href: '/portal-shell/wip-overview',
replace: (value) => calls.push({ kind: 'replace-location', value }),
},
__MES_PORTAL_SHELL_NAVIGATE__: (target, options) => {
calls.push({ kind: 'bridge', target, options });
},
};
navigateToRuntimeRoute('/wip-detail?workcenter=WB12');
assert.deepEqual(calls, [
{
kind: 'bridge',
target: '/wip-detail?workcenter=WB12',
options: { replace: false },
},
]);
globalThis.window = originalWindow;
});
test('navigateToRuntimeRoute falls back to location when bridge is unavailable', () => {
const originalWindow = globalThis.window;
const calls = [];
globalThis.window = {
location: {
pathname: '/wip-overview',
href: '/wip-overview',
replace: (value) => calls.push({ kind: 'replace-location', value }),
},
};
navigateToRuntimeRoute('/wip-detail?workcenter=WB12');
assert.equal(globalThis.window.location.href, '/wip-detail?workcenter=WB12');
assert.deepEqual(calls, []);
globalThis.window = originalWindow;
});