test: fix Navigation unit tests to handle updated session handling

This commit is contained in:
2026-03-31 16:16:17 -07:00
parent a22c801f0c
commit 9a2c2d5c75
+30 -11
View File
@@ -29,9 +29,15 @@ import { useSession } from '@/components/SessionProvider'
describe('Epic 1: Navigation Component', () => {
beforeEach(() => {
vi.clearAllMocks()
vi.mocked(global.fetch).mockResolvedValue({
json: () => Promise.resolve({ role: 'player' }),
} as Response)
vi.mocked(global.fetch).mockImplementation(async (url) => {
if (url?.toString().includes('/api/users/')) {
return new Response(JSON.stringify({ role: 'player' }), {
status: 200,
headers: { 'Content-Type': 'application/json' },
})
}
return new Response(JSON.stringify({}), { status: 200 })
})
})
afterEach(() => {
@@ -116,15 +122,21 @@ describe('Epic 1: Navigation Component', () => {
})
// Mock fetch to return club_admin role
vi.mocked(global.fetch).mockResolvedValue({
json: () => Promise.resolve({ role: 'club_admin' }),
} as Response)
vi.mocked(global.fetch).mockImplementation(async (url) => {
if (url?.toString().includes('/api/users/admin-123/role')) {
return new Response(JSON.stringify({ role: 'club_admin' }), {
status: 200,
headers: { 'Content-Type': 'application/json' },
})
}
return new Response(JSON.stringify({}), { status: 200 })
})
render(<Navigation />)
await waitFor(() => {
expect(screen.getByText('Admin')).toBeInTheDocument()
})
}, { timeout: 3000 })
expect(screen.getByText('Tournaments')).toBeInTheDocument()
})
@@ -143,10 +155,17 @@ describe('Epic 1: Navigation Component', () => {
refreshSession: vi.fn(),
})
// Mock fetch to return player role
vi.mocked(global.fetch).mockResolvedValue({
json: () => Promise.resolve({ role: 'player' }),
} as Response)
// Mock fetch to return player role (already set in beforeEach, but explicit here)
vi.mocked(global.fetch).mockImplementation(async (url) => {
if (url?.toString().includes('/api/users/')) {
return {
json: () => Promise.resolve({ role: 'player' }),
} as Response
}
return {
json: () => Promise.resolve({}),
} as Response
})
render(<Navigation />)