1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-25 00:07:47 +01:00

chore: add enterprise extension point to enable change requests on project 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.
This commit is contained in:
Thomas Heartman 2024-04-18 13:49:08 +02:00 committed by GitHub
parent bda5eda224
commit bf4c29b621
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 42 additions and 0 deletions

View File

@ -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();
},
);
});
});

View File

@ -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);
@ -308,6 +309,8 @@ export default class ProjectService {
}),
);
await enableChangeRequestsForSpecifiedEnvironments();
await this.accessService.createDefaultProjectRoles(user, data.id);
await this.eventService.storeEvent({