Skip to content

Commit 41b7b18

Browse files
authored
Merge pull request #621 from US-EPA-CAMD/develop
Sprint 12 migration to test/perf
2 parents 96f100e + d06b9d1 commit 41b7b18

10 files changed

+158
-20
lines changed

src/dto/test-summary.dto.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,9 @@ export class TestSummaryRecordDTO extends TestSummaryBaseDTO {
726726
addDate: string;
727727
updateDate: string;
728728
evalStatusCode: string;
729+
evalStatusCodeDescription: string;
730+
submissionAvailabilityCode: string;
731+
submissionAvailabilityCodeDescription: string;
729732
}
730733

731734
export class TestSummaryImportDTO extends TestSummaryBaseDTO {

src/maps/test-summary.map.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ export class TestSummaryMap extends BaseMap<TestSummary, TestSummaryDTO> {
4040

4141
public async one(entity: TestSummary): Promise<TestSummaryDTO> {
4242
let evalStatusCode = null;
43+
let evalStatusCodeDescription = null;
44+
let submissionAvailabilityCode = null;
45+
let submissionAvailabilityCodeDescription = null;
4346

4447
const linearitySummaries = entity.linearitySummaries
4548
? await this.linearityMap.many(entity.linearitySummaries)
@@ -136,6 +139,9 @@ export class TestSummaryMap extends BaseMap<TestSummary, TestSummaryDTO> {
136139
injectionProtocolCode: entity.injectionProtocolCode,
137140
calculatedSpanValue: entity.calculatedSpanValue,
138141
evalStatusCode,
142+
evalStatusCodeDescription,
143+
submissionAvailabilityCode,
144+
submissionAvailabilityCodeDescription,
139145
userId: entity.userId,
140146
addDate: entity.addDate ? entity.addDate.toISOString() : null,
141147
updateDate: entity.updateDate ? entity.updateDate.toISOString() : null,

src/qa-certification-workspace/test-summary-review-and-submit.service.spec.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ const dto = new ReviewAndSubmitTestSummaryDTO();
1111
dto.beginDate = '2021-04-04';
1212
dto.endDate = '2021-04-05';
1313
dto.periodAbbreviation = '2022 Q1';
14+
dto.testSumId = 'testSumId1';
15+
dto.evalStatusCode = 'PENDING';
1416

1517
const dto2 = new ReviewAndSubmitTestSummaryDTO();
1618
dto2.beginDate = '2022-04-04';
@@ -21,6 +23,8 @@ const mockRepo = () => ({
2123
find: jest.fn().mockImplementation(args => {
2224
if (args.where['monPlanId']) {
2325
return [new ReviewAndSubmitTestSummaryDTO()];
26+
} else if (args.where['testSumId']) {
27+
return [dto];
2428
} else {
2529
return [dto, dto2];
2630
}
@@ -101,4 +105,13 @@ describe('TestSummaryReviewAndSubmitService', () => {
101105
expect(result.length).toBe(1);
102106
});
103107
});
108+
109+
110+
describe('getTestSummaryRecordsByTestSumIds', () => {
111+
it('should call the getTestSummaryRecordsByTestSumIds test summary service function given list of testSumIds', async () => {
112+
const result = await service.getTestSummaryRecordsByTestSumIds(['testSumId1']);
113+
expect(result.length).toBe(1);
114+
expect(result[0].evalStatusCode).toBe('PENDING');
115+
});
116+
});
104117
});

src/qa-certification-workspace/test-summary-review-and-submit.service.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,33 @@ export class TestSummaryReviewAndSubmitService {
9797
throw new EaseyException(e, HttpStatus.INTERNAL_SERVER_ERROR);
9898
}
9999
}
100+
101+
async getTestSummaryRecordsByTestSumIds(
102+
testSumIds: string[],
103+
isWorkspace: boolean = true,
104+
): Promise<ReviewAndSubmitTestSummaryDTO[]> {
105+
106+
let repository;
107+
108+
if (isWorkspace) {
109+
repository = this.workspaceRepository;
110+
} else {
111+
repository = this.globalRepository;
112+
}
113+
114+
let data: ReviewAndSubmitTestSummaryDTO[];
115+
116+
try {
117+
data = [];
118+
if (testSumIds && testSumIds.length > 0) {
119+
data = await this.map.many(
120+
await repository.find({ where: { testSumId: In(testSumIds) } }),
121+
);
122+
}
123+
return data;
124+
} catch (e) {
125+
throw new EaseyException(e, HttpStatus.INTERNAL_SERVER_ERROR);
126+
}
127+
128+
}
100129
}

src/test-summary-workspace/test-summary.module.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,15 @@ import { TestSummaryChecksService } from './test-summary-checks.service';
4242
import { TestSummaryWorkspaceController } from './test-summary.controller';
4343
import { TestSummaryWorkspaceRepository } from './test-summary.repository';
4444
import { TestSummaryWorkspaceService } from './test-summary.service';
45+
import { TestSummaryReviewAndSubmitService } from '../qa-certification-workspace/test-summary-review-and-submit.service';
46+
import { TestSummaryReviewAndSubmitRepository } from '../qa-certification-workspace/test-summary-review-and-submit.repository';
47+
import { TestSummaryReviewAndSubmitGlobalRepository } from '../qa-certification-workspace/test-summary-review-and-submit-global.repository';
48+
import { ReviewAndSubmitTestSummaryMap } from '../maps/review-and-submit-test-summary.map';
49+
4550

4651
@Module({
4752
imports: [
48-
TypeOrmModule.forFeature([TestSummaryWorkspaceRepository]),
53+
TypeOrmModule.forFeature([TestSummaryWorkspaceRepository, TestSummaryReviewAndSubmitRepository, TestSummaryReviewAndSubmitGlobalRepository]),
4954
ComponentModule,
5055
AnalyzerRangeModule,
5156
TestSummaryMasterDataRelationshipModule,
@@ -89,6 +94,10 @@ import { TestSummaryWorkspaceService } from './test-summary.service';
8994
TestSummaryChecksService,
9095
TestSummaryWorkspaceService,
9196
TestSummaryWorkspaceRepository,
97+
TestSummaryReviewAndSubmitService,
98+
TestSummaryReviewAndSubmitRepository,
99+
TestSummaryReviewAndSubmitGlobalRepository,
100+
ReviewAndSubmitTestSummaryMap,
92101
],
93102
exports: [
94103
TypeOrmModule,

src/test-summary-workspace/test-summary.service.spec.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ import { TransmitterTransducerAccuracyWorkspaceService } from '../transmitter-tr
5656
import { UnitDefaultTestWorkspaceService } from '../unit-default-test-workspace/unit-default-test-workspace.service';
5757
import { TestSummaryWorkspaceRepository } from './test-summary.repository';
5858
import { TestSummaryWorkspaceService } from './test-summary.service';
59+
import { ReviewAndSubmitTestSummaryDTO } from '../dto/review-and-submit-test-summary.dto';
60+
import { TestSummaryReviewAndSubmitService } from '../qa-certification-workspace/test-summary-review-and-submit.service';
5961

6062
const locationId = '121';
6163
const facilityId = 1;
@@ -70,6 +72,10 @@ const lineSumDto = new LinearitySummaryDTO();
7072
const lineSumImportDto = new LinearitySummaryImportDTO();
7173
lineSumDto.testSumId = testSumId;
7274

75+
const reviewAndSubmitTestSummaryDTO = new ReviewAndSubmitTestSummaryDTO();
76+
reviewAndSubmitTestSummaryDTO.testSumId = testSumId;
77+
reviewAndSubmitTestSummaryDTO.evalStatusCode = 'PENDING';
78+
7379
const payload = new TestSummaryImportDTO();
7480
payload.testTypeCode = 'code';
7581
payload.testNumber = '1';
@@ -88,6 +94,10 @@ const mockRepository = () => ({
8894
save: jest.fn().mockResolvedValue(testSummary),
8995
});
9096

97+
const mockTestSummaryReviewAndSubmitService = () => ({
98+
getTestSummaryRecordsByTestSumIds: jest.fn().mockResolvedValue([reviewAndSubmitTestSummaryDTO]),
99+
});
100+
91101
const mockLinearitySummaryService = () => ({
92102
export: jest.fn().mockResolvedValue([lineSumDto]),
93103
import: jest.fn().mockResolvedValue(null),
@@ -206,6 +216,10 @@ describe('TestSummaryWorkspaceService', () => {
206216
imports: [LoggerModule],
207217
providers: [
208218
TestSummaryWorkspaceService,
219+
{
220+
provide: TestSummaryReviewAndSubmitService,
221+
useFactory: mockTestSummaryReviewAndSubmitService,
222+
},
209223
{
210224
provide: LinearitySummaryWorkspaceService,
211225
useFactory: mockLinearitySummaryService,
@@ -338,8 +352,11 @@ describe('TestSummaryWorkspaceService', () => {
338352

339353
describe('getTestSummariesByLocationId', () => {
340354
it('calls the repository.getTestSummariesByLocationId() and get test summaries by locationId', async () => {
355+
testSummaryDto.id = testSumId;
341356
const result = await service.getTestSummariesByLocationId(locationId);
342-
expect(result).toEqual([testSummaryDto]);
357+
expect(result.length).toEqual(1);
358+
expect(result[0].id).toEqual(testSumId);
359+
expect(result[0].evalStatusCode).toEqual(reviewAndSubmitTestSummaryDTO.evalStatusCode);
343360
});
344361
});
345362

src/test-summary-workspace/test-summary.service.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,15 @@ import { TestQualificationWorkspaceService } from '../test-qualification-workspa
4141
import { TransmitterTransducerAccuracyWorkspaceService } from '../transmitter-transducer-accuracy-workspace/transmitter-transducer-accuracy.service';
4242
import { UnitDefaultTestWorkspaceService } from '../unit-default-test-workspace/unit-default-test-workspace.service';
4343
import { TestSummaryWorkspaceRepository } from './test-summary.repository';
44+
import { TestSummaryReviewAndSubmitService } from '../qa-certification-workspace/test-summary-review-and-submit.service';
4445

4546
@Injectable()
4647
export class TestSummaryWorkspaceService {
4748
constructor(
4849
private readonly logger: Logger,
4950
private readonly map: TestSummaryMap,
51+
@Inject(forwardRef(() => TestSummaryReviewAndSubmitService))
52+
private readonly testSummaryReviewAndSubmitService: TestSummaryReviewAndSubmitService,
5053
@Inject(forwardRef(() => LinearitySummaryWorkspaceService))
5154
private readonly linearityService: LinearitySummaryWorkspaceService,
5255
private readonly repository: TestSummaryWorkspaceRepository,
@@ -131,7 +134,24 @@ export class TestSummaryWorkspaceService {
131134
endDate,
132135
);
133136

134-
return this.map.many(results);
137+
let testSummaries = await this.map.many(results);
138+
const testSummaryIds = testSummaries.map(ts => ts.id);
139+
const testSummaryReviewAndSubmitRecords = await this.testSummaryReviewAndSubmitService.getTestSummaryRecordsByTestSumIds(testSummaryIds);
140+
141+
testSummaries = testSummaries.map(testSummary => {
142+
const matchingRecord = testSummaryReviewAndSubmitRecords.find(record => record.testSumId === testSummary.id);
143+
144+
if (matchingRecord) {
145+
testSummary.evalStatusCode = matchingRecord.evalStatusCode || '';
146+
testSummary.evalStatusCodeDescription = matchingRecord.evalStatusCodeDescription || '';
147+
testSummary.submissionAvailabilityCode = matchingRecord.submissionAvailabilityCode || '';
148+
testSummary.submissionAvailabilityCodeDescription = matchingRecord.submissionCodeDescription || '';
149+
}
150+
151+
return testSummary;
152+
});
153+
154+
return testSummaries;
135155
}
136156

137157
async getTestSummaries(

src/test-summary/test-summary.module.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@ import { UnitDefaultTestModule } from '../unit-default-test/unit-default-test.mo
2424
import { TestSummaryController } from './test-summary.controller';
2525
import { TestSummaryRepository } from './test-summary.repository';
2626
import { TestSummaryService } from './test-summary.service';
27+
import { TestSummaryReviewAndSubmitService } from '../qa-certification-workspace/test-summary-review-and-submit.service';
28+
import { TestSummaryReviewAndSubmitRepository } from '../qa-certification-workspace/test-summary-review-and-submit.repository';
29+
import { TestSummaryReviewAndSubmitGlobalRepository } from '../qa-certification-workspace/test-summary-review-and-submit-global.repository';
30+
import { ReviewAndSubmitTestSummaryMap } from '../maps/review-and-submit-test-summary.map';
2731

2832
@Module({
2933
imports: [
30-
TypeOrmModule.forFeature([TestSummaryRepository]),
34+
TypeOrmModule.forFeature([TestSummaryRepository, TestSummaryReviewAndSubmitRepository, TestSummaryReviewAndSubmitGlobalRepository,]),
3135
LinearitySummaryModule,
3236
LinearityInjectionModule,
3337
ProtocolGasModule,
@@ -49,7 +53,7 @@ import { TestSummaryService } from './test-summary.service';
4953
HgInjectionModule,
5054
],
5155
controllers: [TestSummaryController],
52-
providers: [TestSummaryMap, TestSummaryRepository, TestSummaryService],
56+
providers: [TestSummaryMap, TestSummaryRepository, TestSummaryService, TestSummaryReviewAndSubmitService, TestSummaryReviewAndSubmitRepository, TestSummaryReviewAndSubmitGlobalRepository, ReviewAndSubmitTestSummaryMap, ],
5357
exports: [
5458
TypeOrmModule,
5559
TestSummaryMap,

src/test-summary/test-summary.service.spec.ts

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,30 +41,40 @@ import { AirEmissionTestingService } from '../air-emission-testing/air-emission-
4141
import { TestQualificationService } from '../test-qualification/test-qualification.service';
4242
import { AirEmissionTesting } from '../entities/air-emission-test.entity';
4343
import { TestQualification } from '../entities/test-qualification.entity';
44+
import { TestSummaryReviewAndSubmitService } from '../qa-certification-workspace/test-summary-review-and-submit.service';
45+
import { ReviewAndSubmitTestSummaryDTO } from '../dto/review-and-submit-test-summary.dto';
4446

4547
const locationId = '121';
4648
const facilityId = 1;
4749
const unitId = '121';
4850
const testSumId = '1';
4951

50-
const testSumaary = new TestSummary();
51-
const testSumaaryDto = new TestSummaryDTO();
52+
const testSummary = new TestSummary();
53+
const testSummaryDto = new TestSummaryDTO();
5254
const lineSumDto = new LinearitySummaryDTO();
5355
lineSumDto.testSumId = testSumId;
5456

57+
const reviewAndSubmitTestSummaryDTO = new ReviewAndSubmitTestSummaryDTO();
58+
reviewAndSubmitTestSummaryDTO.testSumId = testSumId;
59+
reviewAndSubmitTestSummaryDTO.evalStatusCode = 'PENDING';
60+
5561
const mockRepository = () => ({
56-
getTestSummaryById: jest.fn().mockResolvedValue(testSumaary),
57-
getTestSummariesByLocationId: jest.fn().mockResolvedValue([testSumaary]),
58-
getTestSummariesByUnitStack: jest.fn().mockResolvedValue([testSumaary]),
62+
getTestSummaryById: jest.fn().mockResolvedValue(testSummary),
63+
getTestSummariesByLocationId: jest.fn().mockResolvedValue([testSummary]),
64+
getTestSummariesByUnitStack: jest.fn().mockResolvedValue([testSummary]),
65+
});
66+
67+
const mockTestSummaryReviewAndSubmitService = () => ({
68+
getTestSummaryRecordsByTestSumIds: jest.fn().mockResolvedValue([reviewAndSubmitTestSummaryDTO]),
5969
});
6070

6171
const mockLinearitySummaryService = () => ({
6272
export: jest.fn().mockResolvedValue([lineSumDto]),
6373
});
6474

6575
const mockMap = () => ({
66-
one: jest.fn().mockResolvedValue(testSumaaryDto),
67-
many: jest.fn().mockResolvedValue([testSumaaryDto]),
76+
one: jest.fn().mockResolvedValue(testSummaryDto),
77+
many: jest.fn().mockResolvedValue([testSummaryDto]),
6878
});
6979

7080
const mockRataService = () => ({
@@ -139,6 +149,10 @@ describe('TestSummaryService', () => {
139149
imports: [LoggerModule],
140150
providers: [
141151
TestSummaryService,
152+
{
153+
provide: TestSummaryReviewAndSubmitService,
154+
useFactory: mockTestSummaryReviewAndSubmitService,
155+
},
142156
{
143157
provide: LinearitySummaryService,
144158
useFactory: mockLinearitySummaryService,
@@ -225,7 +239,7 @@ describe('TestSummaryService', () => {
225239
describe('getTestSummaryById', () => {
226240
it('calls the repository.getTestSummaryById() and get test summary by id', async () => {
227241
const result = await service.getTestSummaryById(testSumId);
228-
expect(result).toEqual(testSumaaryDto);
242+
expect(result).toEqual(testSummaryDto);
229243
});
230244

231245
it('should throw error when test summary not found', async () => {
@@ -245,21 +259,24 @@ describe('TestSummaryService', () => {
245259

246260
describe('getTestSummariesByLocationId', () => {
247261
it('calls the repository.getTestSummariesByLocationId() and get test summaries by locationId', async () => {
262+
testSummaryDto.id = testSumId;
248263
const result = await service.getTestSummariesByLocationId(locationId);
249-
expect(result).toEqual([testSumaaryDto]);
264+
expect(result.length).toEqual(1);
265+
expect(result[0].id).toEqual(testSumId);
266+
expect(result[0].evalStatusCode).toEqual(reviewAndSubmitTestSummaryDTO.evalStatusCode);
250267
});
251268
});
252269

253270
describe('getTestSummaries', () => {
254271
it('calls the repository.getTestSummariesByUnitStack() and get test summaries by locationId', async () => {
255272
const result = await service.getTestSummaries(facilityId, [unitId]);
256-
expect(result).toEqual([testSumaaryDto]);
273+
expect(result).toEqual([testSummaryDto]);
257274
});
258275
});
259276

260277
describe('export', () => {
261278
it('calls the repository.getTestSummariesByUnitStack() and get test summaries by locationId', async () => {
262-
const returnedSummary = testSumaaryDto;
279+
const returnedSummary = testSummaryDto;
263280
returnedSummary.testTypeCode = TestTypeCodes.LINE;
264281
returnedSummary.id = testSumId;
265282

@@ -270,11 +287,11 @@ describe('TestSummaryService', () => {
270287
const result = await service.export(facilityId, [unitId]);
271288

272289
expect(spySummaries).toHaveBeenCalled();
273-
expect(result).toEqual([testSumaaryDto]);
290+
expect(result).toEqual([testSummaryDto]);
274291
});
275292

276293
it('calls the repository.getTestSummariesByUnitStack() and get test summaries by locationId and TestTypeCodes', async () => {
277-
const returnedSummary = testSumaaryDto;
294+
const returnedSummary = testSummaryDto;
278295
returnedSummary.testTypeCode = TestTypeCodes.LINE;
279296
returnedSummary.id = testSumId;
280297

@@ -291,7 +308,7 @@ describe('TestSummaryService', () => {
291308
);
292309

293310
expect(spySummaries).toHaveBeenCalled();
294-
expect(result).toEqual([testSumaaryDto]);
311+
expect(result).toEqual([testSummaryDto]);
295312
});
296313
});
297314
});

0 commit comments

Comments
 (0)