feat(SPA): schema list and the sidebar Content group

This commit is contained in:
Florian Sylvain committed 2026-10-19 19:34:45 +02:00
1 parent 73a75d5cb9
commit 3c67cd2314
34 files changed
+2181 -18

No files matched your search

@@ -124,6 +124,37 @@ describe('Nuxt UI shell foundation and router guards', () => {
await vi.waitFor(() => expect(router.currentRoute.value.path).toBe('/register/pending'))
})
it('The schema route is registered as verified-only with the Schema title', () => {
const resolved = router.resolve('/schema')
expect(resolved.matched).toHaveLength(1)
expect(resolved.meta.auth).toBe('verified')
expect(resolved.meta.title).toBe('Schema')
})
it('The schema route redirects an unverified session to the pending page', async () => {
const getMe = vi.fn().mockResolvedValue({ verified: false })
vi.mocked(useApi).mockReturnValue({ getMe })
setUpSession()
await router.push('/schema')
mountApp()
await vi.waitFor(() => expect(router.currentRoute.value.path).toBe('/register/pending'))
})
it('The schema route redirects a signed-out visitor to login with the original path', async () => {
const getMe = vi.fn().mockRejectedValue(new ApiError(401))
vi.mocked(useApi).mockReturnValue({ getMe })
setUpSession()
await router.push('/schema')
mountApp()
await flushPromises()
expect(router.currentRoute.value.fullPath).toBe('/login?redirect=/schema&reason=expired')
})
it('A session-only route admits an unverified session', async () => {
const getMe = vi.fn().mockResolvedValue({ verified: false })
vi.mocked(useApi).mockReturnValue({ getMe })
+5
View File
@@ -87,6 +87,11 @@ const routes: RouteRecordRaw[] = [
component: () => import('@/views/UsersView.vue'),
meta: { auth: 'verified', title: 'Users' },
},
{
path: '/schema',
component: () => import('@/views/SchemaView.vue'),
meta: { auth: 'verified', title: 'Schema' },
},
{
path: '/activity',
component: () => import('@/views/ActivityView.vue'),