Skip to content

Commit 0df64d8

Browse files
Added a new test for the mapper and added extra mocking when needed for two other unit tests
1 parent 43ed893 commit 0df64d8

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/mapper/EhrExtractMapper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import uk.nhs.adaptors.gp2gp.ehr.utils.TemplateUtils;
2222
import uk.nhs.adaptors.gp2gp.gpc.GetGpcStructuredTaskDefinition;
2323

24+
import uk.nhs.adaptors.gp2gp.ehr.exception.EhrValidationException;
25+
2426
import java.util.List;
2527
import java.util.Optional;
2628
import java.util.stream.Collectors;
@@ -56,6 +58,12 @@ public EhrExtractTemplateParameters mapBundleToEhrFhirExtractParams(
5658
mappedComponents.addAll(nonConsultationResourceMapper.mapRemainingResourcesToEhrCompositions(bundle));
5759
ehrExtractTemplateParameters.setComponents(mappedComponents);
5860

61+
if (mappedComponents.isEmpty()) {
62+
final String message = "couldn't extract EHR Extract: empty structured access record.";
63+
LOGGER.error(message);
64+
throw new EhrValidationException(message);
65+
}
66+
5967
ehrExtractTemplateParameters.setAgentDirectory(
6068
agentDirectoryMapper.mapEHRFolderToAgentDirectory(bundle, getPatientNhsNumber(getGpcStructuredTaskDefinition))
6169
);

service/src/test/java/uk/nhs/adaptors/gp2gp/ehr/mapper/EhrExtractMapperTest.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
44
import static org.mockito.ArgumentMatchers.any;
55
import static org.mockito.ArgumentMatchers.eq;
6-
import static org.mockito.Mockito.mock;
7-
import static org.mockito.Mockito.when;
6+
import static org.junit.jupiter.api.Assertions.assertThrows;
7+
import static org.mockito.Mockito.*;
88

99
import java.time.Instant;
1010
import java.time.temporal.ChronoUnit;
11+
import java.util.Arrays;
12+
import java.util.Collections;
1113

1214
import org.hl7.fhir.dstu3.model.Bundle;
1315
import org.junit.jupiter.api.Test;
@@ -19,6 +21,7 @@
1921

2022
import uk.nhs.adaptors.gp2gp.common.service.RandomIdGeneratorService;
2123
import uk.nhs.adaptors.gp2gp.common.service.TimestampService;
24+
import uk.nhs.adaptors.gp2gp.ehr.exception.EhrValidationException;
2225
import uk.nhs.adaptors.gp2gp.gpc.GetGpcStructuredTaskDefinition;
2326

2427
@ExtendWith(MockitoExtension.class)
@@ -50,6 +53,8 @@ class EhrExtractMapperTest {
5053

5154
@Test
5255
void When_NhsOverrideNumberProvided_Expect_OverrideToBeUsed() {
56+
when(nonConsultationResourceMapper.mapRemainingResourcesToEhrCompositions(any()))
57+
.thenReturn(Arrays.asList("not", "empty"));
5358
ReflectionTestUtils.setField(ehrExtractMapper, OVERRIDE_NHS_NUMBER, OVERRIDE_NHS_NUMBER_VALUE);
5459
when(agentDirectoryMapper.mapEHRFolderToAgentDirectory(any(Bundle.class), eq(OVERRIDE_NHS_NUMBER_VALUE)))
5560
.thenReturn(OVERRIDE_NHS_NUMBER_VALUE);
@@ -66,6 +71,8 @@ void When_NhsOverrideNumberProvided_Expect_OverrideToBeUsed() {
6671

6772
@Test
6873
void When_NhsOverrideNumberIsBlank_Expect_ActualNhsNumberIsUsed() {
74+
when(nonConsultationResourceMapper.mapRemainingResourcesToEhrCompositions(any()))
75+
.thenReturn(Arrays.asList("not", "empty"));
6976
when(agentDirectoryMapper.mapEHRFolderToAgentDirectory(any(Bundle.class), eq(NHS_NUMBER)))
7077
.thenReturn(NHS_NUMBER);
7178
when(timestampService.now()).thenReturn(Instant.now().truncatedTo(ChronoUnit.MILLIS));
@@ -79,6 +86,27 @@ void When_NhsOverrideNumberIsBlank_Expect_ActualNhsNumberIsUsed() {
7986
assertThat(parameters.getAgentDirectory()).isEqualTo(NHS_NUMBER);
8087
}
8188

89+
@Test
90+
void When_BundleHasNoMappableContent_Expect_EhrValidationExceptionIsThrown() {
91+
when(timestampService.now()).thenReturn(Instant.now().truncatedTo(ChronoUnit.MILLIS));
92+
93+
var taskDef = GetGpcStructuredTaskDefinition.builder()
94+
.nhsNumber(NHS_NUMBER)
95+
.build();
96+
var bundle = mock(Bundle.class);
97+
98+
lenient().when(nonConsultationResourceMapper.mapRemainingResourcesToEhrCompositions(any(Bundle.class)))
99+
.thenReturn(Collections.emptyList());
100+
101+
EhrValidationException thrown = assertThrows(EhrValidationException.class, () ->
102+
ehrExtractMapper.mapBundleToEhrFhirExtractParams(taskDef, bundle)
103+
);
104+
105+
assertThat(thrown.getMessage()).isEqualTo("couldn't extract EHR Extract: empty structured access record.");
106+
}
107+
108+
109+
82110
@Test
83111
void When_BuildEhrCompositionForSkeletonEhrExtract_Expect_ExpectedComponentBuilt() {
84112
var documentId = "documentId";

0 commit comments

Comments
 (0)