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'); }); });