1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-14 01:16:17 +02:00
unleash.unleash/src/lib/features/project/project-service.limit.test.ts
2025-03-31 09:29:20 +02:00

63 lines
2.1 KiB
TypeScript

import type { IAuditUser, IFlagResolver, IUnleashConfig } from '../../types';
import { createFakeProjectService } from './createProjectService';
import type { IUser } from '../../types';
import { createTestConfig } from '../../../test/config/test-config';
const alwaysOnFlagResolver = {
isEnabled() {
return true;
},
} as unknown as IFlagResolver;
test('Should not allow to exceed project limit on create', async () => {
const LIMIT = 1;
const { projectService } = createFakeProjectService({
...createTestConfig(),
flagResolver: alwaysOnFlagResolver,
resourceLimits: { projects: LIMIT },
eventBus: {
emit: () => {},
},
} as unknown as IUnleashConfig);
const createProject = (name: string) =>
projectService.createProject({ name }, {} as IUser, {} as IAuditUser);
await createProject('projectA');
await expect(() => createProject('projectB')).rejects.toThrow(
"Failed to create project. You can't create more than the established limit of 1.",
);
});
test('Should not allow to exceed project limit on revive', async () => {
const LIMIT = 1;
const { projectService } = createFakeProjectService({
...createTestConfig(),
flagResolver: alwaysOnFlagResolver,
resourceLimits: { projects: LIMIT },
eventBus: {
emit: () => {},
},
} as unknown as IUnleashConfig);
const createProject = (name: string) =>
projectService.createProject(
{ name, id: name },
{} as IUser,
{} as IAuditUser,
);
const archiveProject = (id: string) =>
projectService.archiveProject(id, {} as IAuditUser);
const reviveProject = (id: string) =>
projectService.reviveProject(id, {} as IAuditUser);
await createProject('projectA');
await archiveProject('projectA');
await createProject('projectB');
await expect(() => reviveProject('projectA')).rejects.toThrow(
"Failed to create project. You can't create more than the established limit of 1.",
);
});