more business rules

This commit is contained in:
Evert Prants 2022-12-07 08:54:34 +02:00
parent 8d0ee3c604
commit ade4f62ef8
2 changed files with 25 additions and 4 deletions

View File

@ -60,11 +60,21 @@ export class IndustryChangeApplicationService {
status: {
$in: options.statuses || Object.values(ApplicationStatus),
},
objectStatus: ObjectStatus.CURRENT,
});
}
async getById(id: string) {
return this.applicationModel.findById(id);
const find = await this.applicationModel.findById(id);
if (!find) {
throw new NotFoundException('The application was not found');
}
if (find.objectStatus !== ObjectStatus.CURRENT) {
throw new BadRequestException('This application has been deleted.');
}
return find;
}
async create(data: RegisterIndustryChangeApplicationDto, token: string) {
@ -116,6 +126,14 @@ export class IndustryChangeApplicationService {
current: take(takeMongoObject(getResident), requestedFields),
requested: take(data, requestedFields),
status,
decision:
status === ApplicationStatus.APPROVED
? {
decidedAt: new Date(),
decidedBy: 'Automatic',
rejectionReason: null,
}
: undefined,
submittedAt: new Date(),
createdBy: token ?? 'no token provided for testing',
});

View File

@ -99,10 +99,13 @@ describe('IndustryChangeApplicationController', () => {
expect(getter.objectStatus).toBe('DELETED');
});
it('should request the application and ensure it is deleted', async () => {
it('should request the application and ensure it is deleted', (done) => {
const appController = app.get(IndustryChangeApplicationController);
const getter = (await appController.getSingle(docID)) as any;
expect(getter.objectStatus).toBe('DELETED');
const getter = appController.getSingle(docID);
getter.catch((e) => {
expect(e.message).toContain('deleted');
done();
});
});
});
});