V13-FE-006: consolidate approved UI and contract hardening
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s

This commit is contained in:
2026-08-13 02:41:00 +09:00
parent d79edae546
commit 3f293d8aa8
1278 changed files with 14384 additions and 1664 deletions
@@ -0,0 +1,24 @@
import { describe, expect, it } from 'vitest'
import { canAccessRoute } from '../routeAccess'
import { router } from '../../../app/router'
import { modelsDetailScreen, modelsListScreen } from '../../../features/models/registry'
import { shadowRunDetailScreen, shadowRunListScreen } from '../../../features/shadow-run/registry'
describe('route access contract', () => {
it('allows routes without a declared permission', () => {
expect(canAccessRoute({}, new Set())).toBe(true)
})
it('requires every declared permission', () => {
expect(canAccessRoute({ permissions: ['model.read'] }, new Set())).toBe(false)
expect(canAccessRoute({ permissions: ['model.read'] }, new Set(['model.read']))).toBe(true)
})
it('keeps active ModelOps route metadata aligned with feature registries', () => {
const registered = [modelsListScreen, modelsDetailScreen, shadowRunListScreen, shadowRunDetailScreen]
for (const screen of registered) {
const route = router.getRoutes().find(candidate => candidate.path === screen.path)
expect(route?.meta.permissions).toEqual(screen.permissions)
}
})
})