Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions src/modules/feature-limit/feature-limit.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,23 @@ export class FeatureLimitService {
maxFileSize: number;
retentionDays: number;
maxVersions: number;
}> {
const user = await this.userRepository.findByUuid(userUuid);
if (!user) {
throw new NotFoundException('User not found');
}

return this.getFileVersioningLimitsByTier(userUuid, user.tierId);
}

async getFileVersioningLimitsByTier(
userUuid: string,
tierId: string,
): Promise<{
enabled: boolean;
maxFileSize: number;
retentionDays: number;
maxVersions: number;
}> {
const fileVersioningLabels = [
LimitLabels.FileVersionEnabled,
Expand All @@ -114,18 +131,13 @@ export class FeatureLimitService {
LimitLabels.FileVersionMaxNumber,
];

const user = await this.userRepository.findByUuid(userUuid);
if (!user) {
throw new NotFoundException('User not found');
}

const [userOverriddenLimits, tierLimits] = await Promise.all([
this.limitsRepository.findUserOverriddenLimitsByLabels(
user.uuid,
userUuid,
fileVersioningLabels,
),
this.limitsRepository.findLimitsByLabelsAndTier(
user.tierId,
tierId,
fileVersioningLabels,
),
]);
Expand Down
12 changes: 6 additions & 6 deletions src/modules/gateway/gateway.usecase.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,7 @@ describe('GatewayUseCases', () => {

beforeEach(() => {
jest
.spyOn(featureLimitService, 'getFileVersioningLimits')
.spyOn(featureLimitService, 'getFileVersioningLimitsByTier')
.mockResolvedValue(newVersioningLimits({ enabled: false }));

jest
Expand Down Expand Up @@ -734,7 +734,7 @@ describe('GatewayUseCases', () => {
it('When user has versioning enabled, then should call partial undo', async () => {
const enabledLimits = newVersioningLimits({ enabled: true });
const getLimitsSpy = jest
.spyOn(featureLimitService, 'getFileVersioningLimits')
.spyOn(featureLimitService, 'getFileVersioningLimitsByTier')
.mockResolvedValue(enabledLimits);
const undoSpy = jest.spyOn(fileUseCases, 'undoFileVersioning');
const partialUndoSpy = jest
Expand All @@ -749,7 +749,7 @@ describe('GatewayUseCases', () => {

await service.updateUser(user, { newStorageSpaceBytes });

expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid);
expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid, user.tierId);
expect(undoSpy).not.toHaveBeenCalled();
expect(partialUndoSpy).toHaveBeenCalledWith(user.uuid, {
retentionDays: enabledLimits.retentionDays,
Expand All @@ -760,7 +760,7 @@ describe('GatewayUseCases', () => {
it('When user has versioning disabled, then should delete all file versions', async () => {
const disabledLimits = newVersioningLimits({ enabled: false });
const getLimitsSpy = jest
.spyOn(featureLimitService, 'getFileVersioningLimits')
.spyOn(featureLimitService, 'getFileVersioningLimitsByTier')
.mockResolvedValue(disabledLimits);
const undoSpy = jest
.spyOn(fileUseCases, 'undoFileVersioning')
Expand All @@ -774,14 +774,14 @@ describe('GatewayUseCases', () => {

await service.updateUser(user, { newStorageSpaceBytes });

expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid);
expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid, user.tierId);
expect(undoSpy).toHaveBeenCalledWith(user.uuid);
});

it('When file versions are deleted, then should log deletion count', async () => {
const disabledLimits = newVersioningLimits({ enabled: false });
jest
.spyOn(featureLimitService, 'getFileVersioningLimits')
.spyOn(featureLimitService, 'getFileVersioningLimitsByTier')
.mockResolvedValue(disabledLimits);
jest
.spyOn(fileUseCases, 'undoFileVersioning')
Expand Down
5 changes: 4 additions & 1 deletion src/modules/gateway/gateway.usecase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,10 @@ export class GatewayUseCases {
}

const limits =
await this.featureLimitService.getFileVersioningLimits(user.uuid);
await this.featureLimitService.getFileVersioningLimitsByTier(
user.uuid,
user.tierId,
);

Logger.log(
`[GATEWAY/UPDATE_TIER] Starting file versioning validation for user ${user.uuid}: enabled=${limits.enabled}, retentionDays=${limits.retentionDays}, maxVersions=${limits.maxVersions}`,
Expand Down
Loading