From 96dc3b5cc6f115269c7c75bde033a8f7a5976662 Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Tue, 30 Dec 2025 00:42:01 +0530 Subject: [PATCH] fix: improve test isolation for managed event type e2e tests (#26283) - Move managedEventTypeSlug generation inside beforeAll to ensure uniqueness across test runs - Add deleteAllTeamEventTypes method to EventTypesRepositoryFixture - Explicitly delete all team event types in afterAll before deleting teams This fixes flaky tests in organizations-member-team-admin-event-types.e2e-spec.ts where the managed event type creation was intermittently failing with 400 Bad Request. Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- ...rganizations-member-team-admin-event-types.e2e-spec.ts | 7 ++++++- .../fixtures/repository/event-types.repository.fixture.ts | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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 ee1c501125..065578c72c 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 @@ -63,9 +63,11 @@ describe("Organizations Event Types Endpoints", () => { let collectiveEventType: TeamEventTypeOutput_2024_06_14; let managedEventType: TeamEventTypeOutput_2024_06_14; - const managedEventTypeSlug = `organizations-event-types-managed-${randomString()}`; + let managedEventTypeSlug: string; beforeAll(async () => { + // Generate unique slug inside beforeAll to ensure uniqueness across test runs + managedEventTypeSlug = `organizations-event-types-managed-${randomString()}`; const moduleRef = await withApiAuth( userEmail, Test.createTestingModule({ @@ -1383,6 +1385,9 @@ describe("Organizations Event Types Endpoints", () => { 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 949696c961..2779065978 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 @@ -58,6 +58,14 @@ export class EventTypesRepositoryFixture { return this.prismaWriteClient.eventType.delete({ where: { id: eventTypeId } }); } + async deleteAllTeamEventTypes(teamId: number) { + return this.prismaWriteClient.eventType.deleteMany({ + where: { + teamId, + }, + }); + } + async findById(eventTypeId: EventType["id"]) { return this.prismaReadClient.eventType.findUnique({ where: { id: eventTypeId } }); }