Skip to content

Commit b3dd29c

Browse files
Test coverage increased
1 parent 51e3e00 commit b3dd29c

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

service/src/test/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingServiceTest.java

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,8 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.mockito.ArgumentMatchers.any;
55
import static org.mockito.ArgumentMatchers.anyString;
6-
import static org.mockito.Mockito.lenient;
7-
import static org.mockito.Mockito.mock;
8-
import static org.mockito.Mockito.verify;
9-
import static org.mockito.Mockito.when;
106

7+
import static org.mockito.Mockito.*;
118
import static uk.nhs.adaptors.gp2gp.utils.IdUtil.buildIdType;
129

1310
import java.util.Arrays;
@@ -30,6 +27,7 @@
3027
import uk.nhs.adaptors.gp2gp.common.configuration.Gp2gpConfiguration;
3128
import uk.nhs.adaptors.gp2gp.common.service.RandomIdGeneratorService;
3229
import uk.nhs.adaptors.gp2gp.ehr.EhrExtractStatusService;
30+
import uk.nhs.adaptors.gp2gp.ehr.exception.XmlSchemaValidationException;
3331
import uk.nhs.adaptors.gp2gp.ehr.mapper.EhrExtractMapper;
3432
import uk.nhs.adaptors.gp2gp.ehr.mapper.IdMapper;
3533
import uk.nhs.adaptors.gp2gp.ehr.mapper.MessageContext;
@@ -280,6 +278,40 @@ void When_BuildingSkeletonForEhrExtractWithoutChildComponentNodesToReplace_Expec
280278
assertXMLEquals(skeletonEhrExtract, expectedSkeletonEhrExtract);
281279
}
282280

281+
@Test
282+
void When_XmlSchemaValidationFails_Expect_ErrorLoggedAndProcessingContinues() {
283+
var structuredTaskDefinition = mock(GetGpcStructuredTaskDefinition.class);
284+
var bundle = mock(Bundle.class);
285+
var ehrExtractTemplateParameters = mock(EhrExtractTemplateParameters.class);
286+
287+
var ehrExtractContent = "<EhrExtract>some invalid content</EhrExtract>";
288+
var expectedHL7 = "some wrapped hl7 message";
289+
var conversationId = "conversation-id";
290+
var ehrExtractId = "ehr-extract-id";
291+
292+
when(ehrExtractMapper.mapBundleToEhrFhirExtractParams(structuredTaskDefinition, bundle))
293+
.thenReturn(ehrExtractTemplateParameters);
294+
when(ehrExtractMapper.mapEhrExtractToXml(ehrExtractTemplateParameters)).thenReturn(ehrExtractContent);
295+
when(ehrExtractTemplateParameters.getEhrExtractId()).thenReturn(ehrExtractId);
296+
when(structuredTaskDefinition.getConversationId()).thenReturn(conversationId);
297+
when(outputMessageWrapperMapper.map(structuredTaskDefinition, ehrExtractContent))
298+
.thenReturn(expectedHL7);
299+
300+
doThrow(new XmlSchemaValidationException("Invalid XML", new RuntimeException("Invalid XML")))
301+
.when(ehrExtractMapper).validateXmlAgainstSchema(ehrExtractContent);
302+
303+
var actualHL7 = structuredRecordMappingService.mapStructuredRecordToEhrExtractXml(structuredTaskDefinition, bundle);
304+
305+
verify(ehrExtractMapper).mapBundleToEhrFhirExtractParams(structuredTaskDefinition, bundle);
306+
verify(ehrExtractMapper).mapEhrExtractToXml(ehrExtractTemplateParameters);
307+
verify(ehrExtractMapper).validateXmlAgainstSchema(ehrExtractContent);
308+
verify(outputMessageWrapperMapper).map(structuredTaskDefinition, ehrExtractContent);
309+
verify(ehrExtractStatusService).saveEhrExtractMessageId(conversationId, ehrExtractId);
310+
311+
assertThat(actualHL7).isEqualTo(expectedHL7);
312+
}
313+
314+
283315
public static void assertXMLEquals(String actualXML, String expectedXML) throws Exception {
284316
XMLUnit.setIgnoreWhitespace(true);
285317

0 commit comments

Comments
 (0)