Skip to content

Commit f418ce5

Browse files
committed
add tests
1 parent 6a8946f commit f418ce5

File tree

3 files changed

+413
-0
lines changed

3 files changed

+413
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
import { createMock, DeepMocked } from '@golevelup/nestjs-testing';
3+
import { ApplicationDecisionConditionCardController } from './application-decision-condition-card.controller';
4+
import { ApplicationDecisionConditionCardService } from './application-decision-condition-card.service';
5+
import { ApplicationModificationService } from '../../application-modification/application-modification.service';
6+
import { ApplicationReconsiderationService } from '../../application-reconsideration/application-reconsideration.service';
7+
import { ApplicationDecisionConditionCard } from './application-decision-condition-card.entity';
8+
import {
9+
ApplicationDecisionConditionCardBoardDto,
10+
ApplicationDecisionConditionCardDto,
11+
CreateApplicationDecisionConditionCardDto,
12+
UpdateApplicationDecisionConditionCardDto,
13+
} from './application-decision-condition-card.dto';
14+
import { AutomapperModule } from 'automapper-nestjs';
15+
import { classes } from 'automapper-classes';
16+
import { ClsService } from 'nestjs-cls';
17+
import { mockKeyCloakProviders } from '../../../../../test/mocks/mockTypes';
18+
import { ApplicationDecisionProfile } from '../../../../common/automapper/application-decision-v2.automapper.profile';
19+
20+
describe('ApplicationDecisionConditionCardController', () => {
21+
let controller: ApplicationDecisionConditionCardController;
22+
let mockService: DeepMocked<ApplicationDecisionConditionCardService>;
23+
let mockModificationService: DeepMocked<ApplicationModificationService>;
24+
let mockReconsiderationService: DeepMocked<ApplicationReconsiderationService>;
25+
26+
beforeEach(async () => {
27+
mockService = createMock();
28+
mockModificationService = createMock();
29+
mockReconsiderationService = createMock();
30+
31+
const module: TestingModule = await Test.createTestingModule({
32+
imports: [
33+
AutomapperModule.forRoot({
34+
strategyInitializer: classes(),
35+
}),
36+
],
37+
controllers: [ApplicationDecisionConditionCardController],
38+
providers: [
39+
{
40+
provide: ApplicationDecisionConditionCardService,
41+
useValue: mockService,
42+
},
43+
{
44+
provide: ApplicationModificationService,
45+
useValue: mockModificationService,
46+
},
47+
{
48+
provide: ApplicationReconsiderationService,
49+
useValue: mockReconsiderationService,
50+
},
51+
{
52+
provide: ClsService,
53+
useValue: {},
54+
},
55+
ApplicationDecisionProfile,
56+
...mockKeyCloakProviders,
57+
],
58+
}).compile();
59+
60+
controller = module.get<ApplicationDecisionConditionCardController>(ApplicationDecisionConditionCardController);
61+
});
62+
63+
it('should be defined', () => {
64+
expect(controller).toBeDefined();
65+
});
66+
67+
it('should return a condition card', async () => {
68+
const uuid = 'example-uuid';
69+
const conditionCard = new ApplicationDecisionConditionCard();
70+
conditionCard.decision = { uuid: 'decision-uuid' } as any;
71+
mockService.get.mockResolvedValue(conditionCard);
72+
73+
const result = await controller.get(uuid);
74+
75+
expect(mockService.get).toHaveBeenCalledWith(uuid);
76+
expect(result).toBeInstanceOf(ApplicationDecisionConditionCardDto);
77+
});
78+
79+
it('should create a new condition card', async () => {
80+
const dto: CreateApplicationDecisionConditionCardDto = {
81+
conditionsUuids: ['condition-uuid-1', 'condition-uuid-2'],
82+
decisionUuid: 'decision-uuid',
83+
cardStatusCode: 'status-code',
84+
};
85+
const conditionCard = new ApplicationDecisionConditionCard();
86+
conditionCard.decision = { uuid: 'decision-uuid' } as any;
87+
mockService.create.mockResolvedValue(conditionCard);
88+
89+
const result = await controller.create(dto);
90+
91+
expect(mockService.create).toHaveBeenCalledWith(dto);
92+
expect(result).toBeInstanceOf(ApplicationDecisionConditionCardDto);
93+
});
94+
95+
it('should update the condition card and return updated card', async () => {
96+
const uuid = 'example-uuid';
97+
const dto: UpdateApplicationDecisionConditionCardDto = {
98+
conditionsUuids: ['condition-uuid-1', 'condition-uuid-2'],
99+
cardStatusCode: 'updated-status-code',
100+
};
101+
const conditionCard = new ApplicationDecisionConditionCard();
102+
conditionCard.decision = { uuid: 'decision-uuid' } as any;
103+
mockService.update.mockResolvedValue(conditionCard);
104+
105+
const result = await controller.update(uuid, dto);
106+
107+
expect(mockService.update).toHaveBeenCalledWith(uuid, dto);
108+
expect(result).toBeInstanceOf(ApplicationDecisionConditionCardDto);
109+
});
110+
111+
it('should return a condition card by board card uuid', async () => {
112+
const uuid = 'example-uuid';
113+
const conditionCard = new ApplicationDecisionConditionCard();
114+
conditionCard.decision = { uuid: 'decision-uuid', application: { fileNumber: 'file-number' } } as any;
115+
116+
mockService.getByBoardCard.mockResolvedValue(conditionCard);
117+
mockReconsiderationService.getByApplicationDecisionUuid.mockResolvedValue([]);
118+
mockModificationService.getByApplicationDecisionUuid.mockResolvedValue([]);
119+
120+
const result = await controller.getByCardUuid(uuid);
121+
122+
expect(mockService.getByBoardCard).toHaveBeenCalledWith(uuid);
123+
expect(result).toBeInstanceOf(ApplicationDecisionConditionCardBoardDto);
124+
expect(result.fileNumber).toEqual('file-number');
125+
});
126+
});

0 commit comments

Comments
 (0)