diff --git a/src/lib/features/project/project-service.test.ts b/src/lib/features/project/project-service.test.ts new file mode 100644 index 0000000000..4dc601dadb --- /dev/null +++ b/src/lib/features/project/project-service.test.ts @@ -0,0 +1,39 @@ +import { createTestConfig } from '../../../test/config/test-config'; +import { RoleName } from '../../types'; +import { createFakeProjectService } from './createProjectService'; + +describe('enterprise extension: enable change requests', () => { + test('it calls the change request enablement function', async () => { + expect.assertions(1); + + const config = createTestConfig(); + const service = createFakeProjectService(config); + + // @ts-expect-error: if we don't set this up, the test will fail due to a missing role. + service.accessService.createRole({ + name: RoleName.OWNER, + description: 'Project owner', + createdByUserId: -1, + }); + + const projectId = 'fake-project-id'; + await service.createProject( + { + id: projectId, + name: 'fake-project-name', + }, + { + id: 5, + permissions: [], + isAPI: false, + }, + async () => { + // @ts-expect-error: we want to verify that the project /has/ + // been created when calling the function. + const project = await service.projectStore.get(projectId); + + expect(project).toBeTruthy(); + }, + ); + }); +}); diff --git a/src/lib/features/project/project-service.ts b/src/lib/features/project/project-service.ts index 793783d46d..7fa036cf2d 100644 --- a/src/lib/features/project/project-service.ts +++ b/src/lib/features/project/project-service.ts @@ -283,6 +283,7 @@ export default class ProjectService { async createProject( newProject: CreateProject, user: IUser, + enableChangeRequestsForSpecifiedEnvironments: () => Promise = async () => {}, ): Promise { await this.validateProjectEnvironments(newProject.environments); @@ -308,6 +309,8 @@ export default class ProjectService { }), ); + await enableChangeRequestsForSpecifiedEnvironments(); + await this.accessService.createDefaultProjectRoles(user, data.id); await this.eventService.storeEvent({