Skip to content

Commit

Permalink
chore: add enterprise extension point to enable change requests on pr…
Browse files Browse the repository at this point in the history
…oject creation (#6881)

This PR adds an optional function parameter to the `createProject`
function that is intended to enable change requests for the newly
created project.

The assumption is that all the logic within will be decided in the
enterprise impl. The only thing we want to verify here is that it is
called after the project has been created.
  • Loading branch information
thomasheartman committed Apr 18, 2024
1 parent bda5eda commit bf4c29b
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/lib/features/project/project-service.test.ts
Original file line number Diff line number Diff line change
@@ -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();
},
);
});
});
3 changes: 3 additions & 0 deletions src/lib/features/project/project-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@ export default class ProjectService {
async createProject(
newProject: CreateProject,
user: IUser,
enableChangeRequestsForSpecifiedEnvironments: () => Promise<void> = async () => {},
): Promise<IProject> {
await this.validateProjectEnvironments(newProject.environments);

Expand All @@ -308,6 +309,8 @@ export default class ProjectService {
}),
);

await enableChangeRequestsForSpecifiedEnvironments();

await this.accessService.createDefaultProjectRoles(user, data.id);

await this.eventService.storeEvent({
Expand Down

0 comments on commit bf4c29b

Please sign in to comment.