Skip to content

Commit ce59d89

Browse files
authored
Merge pull request #2074 from bcgov/feautre/ALCS-1871-4
QA Fixes #3: Soft Remove Decision Condition Cards on Decision Removal
2 parents 5bfc745 + e786cf4 commit ce59d89

File tree

5 files changed

+125
-207
lines changed

5 files changed

+125
-207
lines changed

services/apps/alcs/src/alcs/application-decision/application-decision-condition/application-decision-condition-card/application-decision-condition-card.service.spec.ts

+28
Original file line numberDiff line numberDiff line change
@@ -297,4 +297,32 @@ describe('ApplicationDecisionConditionCardService', () => {
297297
await expect(service.getByBoardCard(uuid)).rejects.toThrow(ServiceNotFoundException);
298298
});
299299
});
300+
301+
describe('softRemove', () => {
302+
it('should soft remove a condition card', async () => {
303+
const conditionCard = new ApplicationDecisionConditionCard();
304+
conditionCard.cardUuid = 'card-uuid';
305+
const card = new Card();
306+
307+
mockCardService.get.mockResolvedValue(card);
308+
mockCardService.softRemoveByUuid.mockResolvedValue();
309+
mockRepository.softRemove.mockResolvedValue(conditionCard);
310+
311+
const result = await service.softRemove(conditionCard);
312+
313+
expect(mockCardService.get).toHaveBeenCalledWith(conditionCard.cardUuid);
314+
expect(mockCardService.softRemoveByUuid).toHaveBeenCalledWith(card.uuid);
315+
expect(mockRepository.softRemove).toHaveBeenCalledWith(conditionCard);
316+
expect(result).toEqual(conditionCard);
317+
});
318+
319+
it('should throw an error if card is not found', async () => {
320+
const conditionCard = new ApplicationDecisionConditionCard();
321+
conditionCard.cardUuid = 'card-uuid';
322+
323+
mockCardService.get.mockResolvedValue(null);
324+
325+
await expect(service.softRemove(conditionCard)).rejects.toThrow(ServiceNotFoundException);
326+
});
327+
});
300328
});

services/apps/alcs/src/alcs/application-decision/application-decision-condition/application-decision-condition-card/application-decision-condition-card.service.ts

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import { Injectable } from '@nestjs/common';
1+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
22
import {
33
ApplicationDecisionConditionCardBoardDto,
4-
ApplicationDecisionConditionCardDto,
54
CreateApplicationDecisionConditionCardDto,
6-
UpdateApplicationDecisionConditionBoardCardDto,
75
UpdateApplicationDecisionConditionCardDto,
86
} from './application-decision-condition-card.dto';
97
import { InjectRepository } from '@nestjs/typeorm';
@@ -23,9 +21,6 @@ import { ApplicationDecisionV2Service } from '../../application-decision-v2/appl
2321
import { Board } from '../../../board/board.entity';
2422
import { InjectMapper } from 'automapper-nestjs';
2523
import { Mapper } from 'automapper-core';
26-
import { ApplicationDecisionConditionDateService } from '../application-decision-condition-date/application-decision-condition-date.service';
27-
import { Application } from '../../../application/application.entity';
28-
import { ApplicationDto } from '../../../application/application.dto';
2924
import { ApplicationType } from '../../../code/application-code/application-type/application-type.entity';
3025
import { ApplicationTypeDto } from '../../../code/application-code/application-type/application-type.dto';
3126
import { ApplicationDecision } from '../../application-decision.entity';
@@ -61,6 +56,7 @@ export class ApplicationDecisionConditionCardService {
6156
@InjectRepository(ApplicationDecisionConditionCard)
6257
private repository: Repository<ApplicationDecisionConditionCard>,
6358
private applicationDecisionConditionService: ApplicationDecisionConditionService,
59+
@Inject(forwardRef(() => ApplicationDecisionV2Service))
6460
private applicationDecisionService: ApplicationDecisionV2Service,
6561
private boardService: BoardService,
6662
private cardService: CardService,
@@ -154,6 +150,16 @@ export class ApplicationDecisionConditionCardService {
154150
return this.repository.save(applicationDecisionConditionCard);
155151
}
156152

153+
async softRemove(decisionConditionCard: ApplicationDecisionConditionCard) {
154+
const card = await this.cardService.get(decisionConditionCard.cardUuid);
155+
if (!card) {
156+
throw new ServiceNotFoundException(`Card with uuid ${decisionConditionCard.cardUuid} not found`);
157+
}
158+
159+
await this.cardService.softRemoveByUuid(card.uuid);
160+
return this.repository.softRemove(decisionConditionCard);
161+
}
162+
157163
async getByBoard(boardUuid: string): Promise<ApplicationDecisionConditionCard[]> {
158164
return await this.repository.find({
159165
where: { card: { boardUuid } },

0 commit comments

Comments
 (0)