Skip to content

Commit ee224ed

Browse files
Added new test and implementation for XML validation before sending.
1 parent fc26d83 commit ee224ed

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

service/src/main/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import uk.nhs.adaptors.gp2gp.ehr.utils.ResourceExtractor;
2929
import uk.nhs.adaptors.gp2gp.mhs.model.Identifier;
3030
import uk.nhs.adaptors.gp2gp.mhs.model.OutboundMessage;
31+
import uk.nhs.adaptors.gp2gp.transformjsontoxmltool.XmlSchemaValidator;
3132

3233
import javax.xml.parsers.DocumentBuilder;
3334
import javax.xml.parsers.DocumentBuilderFactory;
@@ -57,6 +58,7 @@ public class StructuredRecordMappingService {
5758
private final RandomIdGeneratorService randomIdGeneratorService;
5859
private final SupportedContentTypes supportedContentTypes;
5960
private final EhrExtractStatusService ehrExtractStatusService;
61+
private final XmlSchemaValidator xmlSchemaValidator;
6062

6163
private DocumentBuilder documentBuilder;
6264

@@ -151,6 +153,8 @@ public String mapStructuredRecordToEhrExtractXml(GetGpcStructuredTaskDefinition
151153
.mapBundleToEhrFhirExtractParams(structuredTaskDefinition, bundle);
152154
String ehrExtractContent = ehrExtractMapper.mapEhrExtractToXml(ehrExtractTemplateParameters);
153155

156+
xmlSchemaValidator.validateOutputToXmlSchema(structuredTaskDefinition.getConversationId(), ehrExtractContent);
157+
154158
ehrExtractStatusService.saveEhrExtractMessageId(structuredTaskDefinition.getConversationId(),
155159
ehrExtractTemplateParameters.getEhrExtractId());
156160

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import uk.nhs.adaptors.gp2gp.ehr.mapper.SupportedContentTypes;
3838
import uk.nhs.adaptors.gp2gp.ehr.mapper.parameters.EhrExtractTemplateParameters;
3939
import uk.nhs.adaptors.gp2gp.mhs.model.OutboundMessage;
40+
import uk.nhs.adaptors.gp2gp.transformjsontoxmltool.XmlSchemaValidator;
4041
import wiremock.org.custommonkey.xmlunit.DetailedDiff;
4142
import wiremock.org.custommonkey.xmlunit.XMLUnit;
4243

@@ -68,6 +69,8 @@ class StructuredRecordMappingServiceTest {
6869
private SupportedContentTypes supportedContentTypes;
6970
@Mock
7071
private EhrExtractStatusService ehrExtractStatusService;
72+
@Mock
73+
private XmlSchemaValidator xmlSchemaValidator;
7174

7275
@InjectMocks
7376
private StructuredRecordMappingService structuredRecordMappingService;
@@ -280,6 +283,31 @@ void When_BuildingSkeletonForEhrExtractWithoutChildComponentNodesToReplace_Expec
280283
assertXMLEquals(skeletonEhrExtract, expectedSkeletonEhrExtract);
281284
}
282285

286+
@Test
287+
void When_MapStructuredRecordToEhrExtractXml_Expect_XmlValidatedAndReturned() {
288+
var structuredTaskDefinition = mock(GetGpcStructuredTaskDefinition.class);
289+
var bundle = mock(Bundle.class);
290+
var ehrExtractTemplateParameters = mock(EhrExtractTemplateParameters.class);
291+
var ehrExtractContent = "ehrExtractXmlContent";
292+
var expectedOutput = "wrappedEhrExtractXml";
293+
var conversationId = "conversationId123";
294+
295+
when(ehrExtractMapper.mapBundleToEhrFhirExtractParams(structuredTaskDefinition, bundle))
296+
.thenReturn(ehrExtractTemplateParameters);
297+
when(ehrExtractMapper.mapEhrExtractToXml(ehrExtractTemplateParameters))
298+
.thenReturn(ehrExtractContent);
299+
when(structuredTaskDefinition.getConversationId())
300+
.thenReturn(conversationId);
301+
when(outputMessageWrapperMapper.map(structuredTaskDefinition, ehrExtractContent))
302+
.thenReturn(expectedOutput);
303+
304+
var actualOutput = structuredRecordMappingService.mapStructuredRecordToEhrExtractXml(structuredTaskDefinition, bundle);
305+
306+
verify(xmlSchemaValidator).validateOutputToXmlSchema("conversationId123", ehrExtractContent);
307+
assertThat(actualOutput).isEqualTo(expectedOutput);
308+
}
309+
310+
283311
public static void assertXMLEquals(String actualXML, String expectedXML) throws Exception {
284312
XMLUnit.setIgnoreWhitespace(true);
285313

0 commit comments

Comments
 (0)