Skip to content

Commit

Permalink
Merge pull request #1703 from bcgov/feature/ALCS-1954
Browse files Browse the repository at this point in the history
Add Default Description to certain documents
  • Loading branch information
dhaselhan authored May 22, 2024
2 parents 0341879 + 991578a commit f2cb4ef
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { classes } from 'automapper-classes';
import { AutomapperModule } from 'automapper-nestjs';
import { createMock, DeepMocked } from '@golevelup/nestjs-testing';
import { BadRequestException } from '@nestjs/common';
import { Test, TestingModule } from '@nestjs/testing';
import { classes } from 'automapper-classes';
import { AutomapperModule } from 'automapper-nestjs';
import { ClsService } from 'nestjs-cls';
import { mockKeyCloakProviders } from '../../../../test/mocks/mockTypes';
import { ApplicationProfile } from '../../../common/automapper/application.automapper.profile';
import { DOCUMENT_TYPE } from '../../../document/document-code.entity';
import { DOCUMENT_SOURCE } from '../../../document/document.dto';
import { Document } from '../../../document/document.entity';
import { ApplicationOwner } from '../../../portal/application-submission/application-owner/application-owner.entity';
Expand All @@ -14,7 +15,6 @@ import { ApplicationParcel } from '../../../portal/application-submission/applic
import { ApplicationParcelService } from '../../../portal/application-submission/application-parcel/application-parcel.service';
import { User } from '../../../user/user.entity';
import { CodeService } from '../../code/code.service';
import { DOCUMENT_TYPE } from '../../../document/document-code.entity';
import { ApplicationDocumentController } from './application-document.controller';
import { ApplicationDocument } from './application-document.entity';
import { ApplicationDocumentService } from './application-document.service';
Expand Down Expand Up @@ -116,6 +116,41 @@ describe('ApplicationDocumentController', () => {
expect(callData.user).toEqual(mockUser);
});

it('should set a default document description for OTHER when source is APPLICANT', async () => {
const mockFile = {};
const mockUser = {};

appDocumentService.attachDocument.mockResolvedValue(mockDocument);

const res = await controller.attachDocument('fileNumber', {
isMultipart: () => true,
body: {
documentType: {
value: DOCUMENT_TYPE.OTHER,
},
fileName: {
value: 'file',
},
source: {
value: DOCUMENT_SOURCE.APPLICANT,
},
visibilityFlags: {
value: '',
},
file: mockFile,
},
user: {
entity: mockUser,
},
});

expect(res.mimeType).toEqual(mockDocument.document.mimeType);

expect(appDocumentService.attachDocument).toHaveBeenCalledTimes(1);
const callData = appDocumentService.attachDocument.mock.calls[0][0];
expect(callData.description).toEqual('Added on behalf of applicant');
});

it('should throw an exception if request is not the right type', async () => {
const mockFile = {};
const mockUser = {};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { Mapper } from 'automapper-core';
import { InjectMapper } from 'automapper-nestjs';
import {
BadRequestException,
Body,
Expand All @@ -12,29 +10,37 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOAuth2 } from '@nestjs/swagger';
import { Mapper } from 'automapper-core';
import { InjectMapper } from 'automapper-nestjs';
import * as config from 'config';
import * as path from 'path';
import { ANY_AUTH_ROLE } from '../../../common/authorization/roles';
import { RolesGuard } from '../../../common/authorization/roles-guard.service';
import { UserRoles } from '../../../common/authorization/roles.decorator';
import {
DOCUMENT_TYPE,
DocumentCode,
} from '../../../document/document-code.entity';
import {
DOCUMENT_SOURCE,
DOCUMENT_SYSTEM,
DocumentTypeDto,
} from '../../../document/document.dto';
import { ApplicationOwnerService } from '../../../portal/application-submission/application-owner/application-owner.service';
import { ApplicationParcelService } from '../../../portal/application-submission/application-parcel/application-parcel.service';
import {
DocumentCode,
DOCUMENT_TYPE,
} from '../../../document/document-code.entity';
import { ApplicationDocumentDto } from './application-document.dto';
import {
ApplicationDocument,
VISIBILITY_FLAG,
} from './application-document.entity';
import { ApplicationDocumentService } from './application-document.service';

const TYPES_REQUIRING_DESCRIPTION = [
DOCUMENT_TYPE.PHOTOGRAPH,
DOCUMENT_TYPE.OTHER,
DOCUMENT_TYPE.PROFESSIONAL_REPORT,
];

@ApiOAuth2(config.get<string[]>('KEYCLOAK.SCOPES'))
@UseGuards(RolesGuard)
@Controller('application-document')
Expand Down Expand Up @@ -291,6 +297,16 @@ export class ApplicationDocumentController {
const documentSource = req.body.source.value as DOCUMENT_SOURCE;
const visibilityFlags = req.body.visibilityFlags.value.split(', ');

//Set Default description to prevent issues when returning to Government
let description: string | undefined;
if (
documentSource === DOCUMENT_SOURCE.APPLICANT &&
documentType &&
TYPES_REQUIRING_DESCRIPTION.includes(documentType)
) {
description = 'Added on behalf of applicant';
}

return await this.applicationDocumentService.attachDocument({
fileNumber,
fileName,
Expand All @@ -300,6 +316,7 @@ export class ApplicationDocumentController {
source: documentSource,
visibilityFlags,
system: DOCUMENT_SYSTEM.ALCS,
description,
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import { Test, TestingModule } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { initApplicationMockEntity } from '../../../../test/mocks/mockEntities';
import {
DOCUMENT_TYPE,
DocumentCode,
} from '../../../document/document-code.entity';
import {
DOCUMENT_SOURCE,
DOCUMENT_SYSTEM,
Expand All @@ -14,10 +18,6 @@ import { DocumentService } from '../../../document/document.service';
import { User } from '../../../user/user.entity';
import { UserService } from '../../../user/user.service';
import { ApplicationService } from '../application.service';
import {
DocumentCode,
DOCUMENT_TYPE,
} from '../../../document/document-code.entity';
import { ApplicationDocument } from './application-document.entity';
import { ApplicationDocumentService } from './application-document.service';

Expand Down Expand Up @@ -233,7 +233,7 @@ describe('ApplicationDocumentService', () => {
mockDocumentService.softRemove.mockResolvedValue();
mockRepository.remove.mockResolvedValue({} as any);

const res = await service.deleteByType(DOCUMENT_TYPE.STAFF_REPORT, '');
await service.deleteByType(DOCUMENT_TYPE.STAFF_REPORT, '');

expect(mockRepository.find).toHaveBeenCalledTimes(1);
expect(mockDocumentService.softRemove).toHaveBeenCalledTimes(2);
Expand Down Expand Up @@ -324,7 +324,7 @@ describe('ApplicationDocumentService', () => {
mockDocumentService.create.mockResolvedValue(new Document());
mockDocumentService.softRemove.mockResolvedValue();

const res = await service.update({
await service.update({
source: DOCUMENT_SOURCE.APPLICANT,
fileName: 'fileName',
user: new User(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ import {
In,
Repository,
} from 'typeorm';
import {
DOCUMENT_TYPE,
DocumentCode,
} from '../../../document/document-code.entity';
import {
DOCUMENT_SOURCE,
DOCUMENT_SYSTEM,
Expand All @@ -20,10 +24,6 @@ import { DocumentService } from '../../../document/document.service';
import { PortalApplicationDocumentUpdateDto } from '../../../portal/application-document/application-document.dto';
import { User } from '../../../user/user.entity';
import { ApplicationService } from '../application.service';
import {
DocumentCode,
DOCUMENT_TYPE,
} from '../../../document/document-code.entity';
import {
ApplicationDocument,
VISIBILITY_FLAG,
Expand Down Expand Up @@ -54,6 +54,7 @@ export class ApplicationDocumentService {
system,
source = DOCUMENT_SOURCE.ALC,
visibilityFlags,
description,
}: {
fileNumber: string;
fileName: string;
Expand All @@ -63,6 +64,7 @@ export class ApplicationDocumentService {
source?: DOCUMENT_SOURCE;
system: DOCUMENT_SYSTEM;
visibilityFlags: VISIBILITY_FLAG[];
description?: string;
}) {
const application = await this.applicationService.getOrFail(fileNumber);
const document = await this.documentService.create(
Expand All @@ -78,6 +80,7 @@ export class ApplicationDocumentService {
application,
document,
visibilityFlags,
description,
});

return this.applicationDocumentRepository.save(appDocument);
Expand Down Expand Up @@ -192,9 +195,8 @@ export class ApplicationDocumentService {
visibilityFlags,
});

const savedDocument = await this.applicationDocumentRepository.save(
document,
);
const savedDocument =
await this.applicationDocumentRepository.save(document);
return this.get(savedDocument.uuid);
}

Expand Down

0 comments on commit f2cb4ef

Please sign in to comment.