From b6c243f1dd83153398d5e7f9ad831af6e1171612 Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Fri, 9 Jan 2026 14:46:59 +0530 Subject: [PATCH] fix: improve cleanup for managed event types and fix flaky api v2 e2e test (#26602) * fix: improve cleanup for managed event types in e2e tests - Add deleteAllUserEventTypes method to EventTypesRepositoryFixture - Update afterAll cleanup to delete user event types before deleting users - This ensures child event types of managed event types are properly cleaned up - Fixes flaky tests caused by incomplete cleanup between test runs - Add explicit return types to fixture methods to satisfy lint rules - Replace @ts-ignore with @ts-expect-error for better type safety Co-Authored-By: anik@cal.com * fix --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- ...ganizations-member-team-admin-event-types.e2e-spec.ts | 9 +++++---- .../repository/event-types.repository.fixture.ts | 8 ++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/api/v2/src/modules/organizations/event-types/organizations-member-team-admin-event-types.e2e-spec.ts b/apps/api/v2/src/modules/organizations/event-types/organizations-member-team-admin-event-types.e2e-spec.ts index 065578c72c..9de4a96b04 100644 --- a/apps/api/v2/src/modules/organizations/event-types/organizations-member-team-admin-event-types.e2e-spec.ts +++ b/apps/api/v2/src/modules/organizations/event-types/organizations-member-team-admin-event-types.e2e-spec.ts @@ -67,7 +67,7 @@ describe("Organizations Event Types Endpoints", () => { beforeAll(async () => { // Generate unique slug inside beforeAll to ensure uniqueness across test runs - managedEventTypeSlug = `organizations-event-types-managed-${randomString()}`; + managedEventTypeSlug = `organizations-event-types-managed-${Date.now()}-${randomString()}`; const moduleRef = await withApiAuth( userEmail, Test.createTestingModule({ @@ -1381,13 +1381,14 @@ describe("Organizations Event Types Endpoints", () => { } afterAll(async () => { + await eventTypesRepositoryFixture.deleteAllUserEventTypes(teammate1.id); + await eventTypesRepositoryFixture.deleteAllUserEventTypes(teammate2.id); + await eventTypesRepositoryFixture.deleteAllTeamEventTypes(team.id); + await eventTypesRepositoryFixture.deleteAllTeamEventTypes(falseTestTeam.id); await userRepositoryFixture.deleteByEmail(userAdmin.email); await userRepositoryFixture.deleteByEmail(teammate1.email); await userRepositoryFixture.deleteByEmail(teammate2.email); await userRepositoryFixture.deleteByEmail(falseTestUser.email); - // Explicitly delete all team event types before deleting the team to ensure proper cleanup - await eventTypesRepositoryFixture.deleteAllTeamEventTypes(team.id); - await eventTypesRepositoryFixture.deleteAllTeamEventTypes(falseTestTeam.id); await teamsRepositoryFixture.delete(team.id); await teamsRepositoryFixture.delete(falseTestTeam.id); await organizationsRepositoryFixture.delete(org.id); diff --git a/apps/api/v2/test/fixtures/repository/event-types.repository.fixture.ts b/apps/api/v2/test/fixtures/repository/event-types.repository.fixture.ts index 2779065978..df7f52fb58 100644 --- a/apps/api/v2/test/fixtures/repository/event-types.repository.fixture.ts +++ b/apps/api/v2/test/fixtures/repository/event-types.repository.fixture.ts @@ -66,6 +66,14 @@ export class EventTypesRepositoryFixture { }); } + async deleteAllUserEventTypes(userId: number) { + return this.prismaWriteClient.eventType.deleteMany({ + where: { + userId, + }, + }); + } + async findById(eventTypeId: EventType["id"]) { return this.prismaReadClient.eventType.findUnique({ where: { id: eventTypeId } }); }