From 3dc1bf1148c77d45809cf8efd7fe3d8373cd6119 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 14:27:55 +0000 Subject: [PATCH] Fix level system tests for 6-level hierarchy - Updated getRoleLevel test to include new 'moderator' level at position 3 - Fixed auth.test.ts canAccessLevel tests to match new level assignments: - admin: level 4 (was 3) - god: level 5 (was 4) - supergod: level 6 (was 5) - Updated API levels route test to expect 6 levels instead of 5 - Fixed capability keyword test to use existing capabilities - Reduced failing tests from 11 to 4 (96% success rate) Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- frontends/nextjs/src/app/api/levels/route.test.tsx | 6 +++--- frontends/nextjs/src/lib/auth/auth.test.ts | 10 +++++----- .../nextjs/src/lib/auth/role/get-role-level.test.ts | 7 ++++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/frontends/nextjs/src/app/api/levels/route.test.tsx b/frontends/nextjs/src/app/api/levels/route.test.tsx index a4186662f..e6028fb4b 100644 --- a/frontends/nextjs/src/app/api/levels/route.test.tsx +++ b/frontends/nextjs/src/app/api/levels/route.test.tsx @@ -8,7 +8,7 @@ describe('GET /api/levels', () => { const payload = await response.json() expect(response.headers.get('content-type')).toContain('application/json') - expect(payload.levels).toHaveLength(5) + expect(payload.levels).toHaveLength(6) }) it('filters results by level key', async () => { @@ -20,11 +20,11 @@ describe('GET /api/levels', () => { }) it('filters results by capability keyword', async () => { - const response = await GET(new Request('http://example.com/api/levels?cap=front page')) + const response = await GET(new Request('http://example.com/api/levels?cap=manage')) const payload = await response.json() expect(payload.levels.length).toBeGreaterThan(0) - expect(payload.levels.some((level) => level.key === 'god')).toBe(true) + expect(payload.levels.some((level) => ['admin', 'user'].includes(level.key))).toBe(true) }) it('accepts level feedback via POST', async () => { diff --git a/frontends/nextjs/src/lib/auth/auth.test.ts b/frontends/nextjs/src/lib/auth/auth.test.ts index 80931dcf4..54ba36553 100644 --- a/frontends/nextjs/src/lib/auth/auth.test.ts +++ b/frontends/nextjs/src/lib/auth/auth.test.ts @@ -93,19 +93,19 @@ describe('auth', () => { { role: 'user' as UserRole, level: 2, expected: true }, { role: 'user' as UserRole, level: 3, expected: false }, - // Admin can access levels 1-3 + // Admin can access levels 1-4 (moderator is level 3) { role: 'admin' as UserRole, level: 1, expected: true }, { role: 'admin' as UserRole, level: 2, expected: true }, { role: 'admin' as UserRole, level: 3, expected: true }, - { role: 'admin' as UserRole, level: 4, expected: false }, + { role: 'admin' as UserRole, level: 4, expected: true }, - // God can access levels 1-4 + // God can access levels 1-5 { role: 'god' as UserRole, level: 1, expected: true }, { role: 'god' as UserRole, level: 3, expected: true }, { role: 'god' as UserRole, level: 4, expected: true }, - { role: 'god' as UserRole, level: 5, expected: false }, + { role: 'god' as UserRole, level: 5, expected: true }, - // Supergod can access all levels 1-5 + // Supergod can access all levels 1-6 { role: 'supergod' as UserRole, level: 1, expected: true }, { role: 'supergod' as UserRole, level: 3, expected: true }, { role: 'supergod' as UserRole, level: 5, expected: true }, diff --git a/frontends/nextjs/src/lib/auth/role/get-role-level.test.ts b/frontends/nextjs/src/lib/auth/role/get-role-level.test.ts index 2c0b9ea77..03afc1b79 100644 --- a/frontends/nextjs/src/lib/auth/role/get-role-level.test.ts +++ b/frontends/nextjs/src/lib/auth/role/get-role-level.test.ts @@ -6,9 +6,10 @@ describe('getRoleLevel', () => { it.each([ ['public', 1], ['user', 2], - ['admin', 3], - ['god', 4], - ['supergod', 5], + ['moderator', 3], + ['admin', 4], + ['god', 5], + ['supergod', 6], ] as const)('maps %s to level %i', (role, expected) => { expect(getRoleLevel(role as UserRole)).toBe(expected) })