Files
bface/test/compat-paths.test.js
Amer Agovic aa872bdd6b Release 1.0.10 with subpath deployment and modal menu invokes.
Add app_base/router_base config, compat path helpers, and scoped service worker
registration so apps can mount under a URL prefix. Wire invoke_type modal through
a handler registry and open the notification center from the standard menu flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 16:44:32 -05:00

39 lines
1.6 KiB
JavaScript

import { describe, it } from 'node:test';
import assert from 'node:assert';
import {
getViteBasePath,
prefixPublicAssetPath,
stripRouterBase,
withRouterBase
} from '../src/platform/compat.js';
import { initEnv, getConfigSync, CONFIG_KEYS } from '../src/platform/env.js';
describe('compat path helpers', () => {
it('normalizes vite base paths', () => {
assert.strictEqual(getViteBasePath('/'), '/');
assert.strictEqual(getViteBasePath('/admin'), '/admin/');
assert.strictEqual(getViteBasePath('/admin/'), '/admin/');
});
it('maps internal routes to public URLs and back', () => {
assert.strictEqual(withRouterBase('/home', '/admin'), '/admin/home');
assert.strictEqual(withRouterBase('/', '/admin'), '/admin/');
assert.strictEqual(stripRouterBase('/admin/home', '/admin'), '/home');
assert.strictEqual(stripRouterBase('/admin/', '/admin'), '/');
assert.strictEqual(stripRouterBase('/admin', '/admin'), '/');
assert.strictEqual(stripRouterBase('/home', '/admin'), '/');
});
it('prefixes public asset paths but not /api', () => {
assert.strictEqual(prefixPublicAssetPath('/brand-logo.svg', '/admin'), '/admin/brand-logo.svg');
assert.strictEqual(prefixPublicAssetPath('/api', '/admin'), '/api');
assert.strictEqual(prefixPublicAssetPath('/admin/logo.svg', '/admin'), '/admin/logo.svg');
});
it('seeds router base into env config', () => {
initEnv({ id: 'demo', app_base: '/admin' });
assert.strictEqual(getConfigSync(CONFIG_KEYS.APP_BASE), '/admin');
assert.strictEqual(getConfigSync(CONFIG_KEYS.ROUTER_BASE), '/admin');
});
});