From fea0585a75fe86130e7e008608a9cc6a40ef8479 Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Thu, 14 May 2026 17:56:35 -0700 Subject: [PATCH] test: improve mock error handling and add test cleanup --- src/__tests__/auth-simple.test.ts | 4 +++- src/__tests__/unit/permissions.test.ts | 16 ++++++++-------- src/__tests__/unit/tournament-update.test.ts | 7 ++++++- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/__tests__/auth-simple.test.ts b/src/__tests__/auth-simple.test.ts index 3fdf857..079c797 100644 --- a/src/__tests__/auth-simple.test.ts +++ b/src/__tests__/auth-simple.test.ts @@ -47,7 +47,9 @@ describe('getSession', () => { }) it('returns null when an error occurs', async () => { - mockFetch.mockRejectedValue(new Error('Network error')) + mockFetch.mockImplementation(async () => { + throw new Error('Network error') + }) const result = await getSession() diff --git a/src/__tests__/unit/permissions.test.ts b/src/__tests__/unit/permissions.test.ts index 26a3a07..b23d942 100644 --- a/src/__tests__/unit/permissions.test.ts +++ b/src/__tests__/unit/permissions.test.ts @@ -1,6 +1,6 @@ /** * Unit Tests: Permissions - * + * * Tests the permission system for tournament management */ @@ -57,7 +57,7 @@ describe('Permissions', () => { user: { id: '1', email: 'test@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('1', 'test@example.com', 'club_admin') ); @@ -70,7 +70,7 @@ describe('Permissions', () => { user: { id: '1', email: 'test@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('1', 'test@example.com', 'player') ); @@ -93,7 +93,7 @@ describe('Permissions', () => { user: { id: 'admin-1', email: 'admin@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('admin-1', 'admin@example.com', 'club_admin') ); @@ -106,7 +106,7 @@ describe('Permissions', () => { user: { id: 'player-1', email: 'player@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('player-1', 'player@example.com', 'player') ); @@ -122,7 +122,7 @@ describe('Permissions', () => { user: { id: 'admin-1', email: 'admin@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('admin-1', 'admin@example.com', 'tournament_admin') ); @@ -135,7 +135,7 @@ describe('Permissions', () => { user: { id: 'admin-1', email: 'admin@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('admin-1', 'admin@example.com', 'club_admin') ); @@ -148,7 +148,7 @@ describe('Permissions', () => { user: { id: 'player-1', email: 'player@example.com' }, session: { token: 'test', expiresAt: new Date() } })); - userFindUniqueMock.mockImplementation(async () => + userFindUniqueMock.mockImplementation(async () => createMockUser('player-1', 'player@example.com', 'player') ); diff --git a/src/__tests__/unit/tournament-update.test.ts b/src/__tests__/unit/tournament-update.test.ts index 2f4aa06..a1d7917 100644 --- a/src/__tests__/unit/tournament-update.test.ts +++ b/src/__tests__/unit/tournament-update.test.ts @@ -3,7 +3,7 @@ * Tests the allowTies field is properly saved when updating tournaments */ -import { describe, it, expect, mock, beforeEach,} from 'bun:test'; +import { describe, it, expect, mock, beforeEach, afterAll } from 'bun:test'; // Create mock functions at module level const eventFindUniqueMock = mock(async () => ({})); @@ -27,6 +27,11 @@ mock.module('@/lib/permissions', () => ({ canDeleteTournament: canDeleteTournamentMock, })); +// Cleanup after all tests in this file +afterAll(() => { + mock.restore('module'); +}); + // Import the route handler after mocking import { PUT } from '@/app/api/tournaments/[id]/route'; import { prisma } from '@/lib/prisma';