Fix validator for documents
This commit is contained in:
parent
af2b702aa4
commit
adeb15809b
|
@ -0,0 +1,30 @@
|
||||||
|
package ca.uhn.fhir.jpa.dao.dstu3;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.hl7.fhir.dstu3.model.Bundle;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jpa.dao.DaoMethodOutcome;
|
||||||
|
import ca.uhn.fhir.util.TestUtil;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public class FhirResourceDaoDocumentDstu3Test extends BaseJpaDstu3Test {
|
||||||
|
|
||||||
|
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(FhirResourceDaoDocumentDstu3Test.class);
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void afterClassClearContext() {
|
||||||
|
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPostDocument() throws Exception {
|
||||||
|
String input = IOUtils.toString(getClass().getResourceAsStream("/sample-document.xml"));
|
||||||
|
Bundle inputBundle = myFhirCtx.newXmlParser().parseResource(Bundle.class, input);
|
||||||
|
DaoMethodOutcome responseBundle = myBundleDao.create(inputBundle, mySrd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -2229,7 +2229,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
} if (method == null) {
|
} if (method == null) {
|
||||||
if (fullUrl == null)
|
if (fullUrl == null)
|
||||||
return IdStatus.REQUIRED;
|
return IdStatus.REQUIRED;
|
||||||
else if (fullUrl.primitiveValue().startsWith("urn:uuid:"))
|
else if (fullUrl.primitiveValue().startsWith("urn:uuid:") || fullUrl.primitiveValue().startsWith("urn:oid:"))
|
||||||
return IdStatus.OPTIONAL;
|
return IdStatus.OPTIONAL;
|
||||||
else
|
else
|
||||||
return IdStatus.REQUIRED;
|
return IdStatus.REQUIRED;
|
||||||
|
|
|
@ -3,8 +3,7 @@ package ca.uhn.fhir.validation;
|
||||||
import static org.hamcrest.Matchers.containsString;
|
import static org.hamcrest.Matchers.containsString;
|
||||||
import static org.hamcrest.Matchers.empty;
|
import static org.hamcrest.Matchers.empty;
|
||||||
import static org.hamcrest.Matchers.greaterThan;
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertThat;
|
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
@ -75,9 +74,9 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
myValidSystems.add(theSystem);
|
myValidSystems.add(theSystem);
|
||||||
myValidConcepts.add(theSystem + "___" + theCode);
|
myValidConcepts.add(theSystem + "___" + theCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
// @Ignore
|
// @Ignore
|
||||||
public void testValidateBuiltInProfiles() throws Exception {
|
public void testValidateBuiltInProfiles() throws Exception {
|
||||||
org.hl7.fhir.dstu3.model.Bundle bundle;
|
org.hl7.fhir.dstu3.model.Bundle bundle;
|
||||||
String name = "profiles-resources";
|
String name = "profiles-resources";
|
||||||
|
@ -88,9 +87,9 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
bundle = ourCtx.newXmlParser().parseResource(org.hl7.fhir.dstu3.model.Bundle.class, vsContents);
|
bundle = ourCtx.newXmlParser().parseResource(org.hl7.fhir.dstu3.model.Bundle.class, vsContents);
|
||||||
for (BundleEntryComponent i : bundle.getEntry()) {
|
for (BundleEntryComponent i : bundle.getEntry()) {
|
||||||
org.hl7.fhir.dstu3.model.Resource next = i.getResource();
|
org.hl7.fhir.dstu3.model.Resource next = i.getResource();
|
||||||
|
|
||||||
ourLog.info(ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(next));
|
ourLog.info(ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(next));
|
||||||
|
|
||||||
ValidationResult output = myVal.validateWithResult(next);
|
ValidationResult output = myVal.validateWithResult(next);
|
||||||
List<SingleValidationMessage> errors = logResultsAndReturnNonInformationalOnes(output);
|
List<SingleValidationMessage> errors = logResultsAndReturnNonInformationalOnes(output);
|
||||||
assertThat("Failed to validate " + i.getFullUrl(), errors, empty());
|
assertThat("Failed to validate " + i.getFullUrl(), errors, empty());
|
||||||
|
@ -98,6 +97,15 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValidateDocument() throws Exception {
|
||||||
|
String vsContents = IOUtils.toString(FhirInstanceValidatorDstu3Test.class.getResourceAsStream("/sample-document.xml"), "UTF-8");
|
||||||
|
|
||||||
|
ValidationResult output = myVal.validateWithResult(vsContents);
|
||||||
|
logResultsAndReturnNonInformationalOnes(output);
|
||||||
|
assertTrue(output.isSuccessful());
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
@ -108,14 +116,13 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
myMockSupport = mock(IValidationSupport.class);
|
myMockSupport = mock(IValidationSupport.class);
|
||||||
ValidationSupportChain validationSupport = new ValidationSupportChain(myMockSupport, myDefaultValidationSupport);
|
ValidationSupportChain validationSupport = new ValidationSupportChain(myMockSupport, myDefaultValidationSupport);
|
||||||
myInstanceVal = new FhirInstanceValidator(validationSupport);
|
myInstanceVal = new FhirInstanceValidator(validationSupport);
|
||||||
|
|
||||||
myVal.registerValidatorModule(myInstanceVal);
|
myVal.registerValidatorModule(myInstanceVal);
|
||||||
|
|
||||||
mySupportedCodeSystemsForExpansion = new HashMap<String, ValueSet.ValueSetExpansionComponent>();
|
mySupportedCodeSystemsForExpansion = new HashMap<String, ValueSet.ValueSetExpansionComponent>();
|
||||||
|
|
||||||
myValidConcepts = new ArrayList<String>();
|
myValidConcepts = new ArrayList<String>();
|
||||||
|
|
||||||
|
|
||||||
when(myMockSupport.expandValueSet(any(FhirContext.class), any(ConceptSetComponent.class))).thenAnswer(new Answer<ValueSetExpansionComponent>() {
|
when(myMockSupport.expandValueSet(any(FhirContext.class), any(ConceptSetComponent.class))).thenAnswer(new Answer<ValueSetExpansionComponent>() {
|
||||||
@Override
|
@Override
|
||||||
public ValueSetExpansionComponent answer(InvocationOnMock theInvocation) throws Throwable {
|
public ValueSetExpansionComponent answer(InvocationOnMock theInvocation) throws Throwable {
|
||||||
|
@ -186,13 +193,13 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
@Override
|
@Override
|
||||||
public List<StructureDefinition> answer(InvocationOnMock theInvocation) throws Throwable {
|
public List<StructureDefinition> answer(InvocationOnMock theInvocation) throws Throwable {
|
||||||
List<StructureDefinition> retVal = myDefaultValidationSupport.fetchAllStructureDefinitions((FhirContext) theInvocation.getArguments()[0]);
|
List<StructureDefinition> retVal = myDefaultValidationSupport.fetchAllStructureDefinitions((FhirContext) theInvocation.getArguments()[0]);
|
||||||
ourLog.info("fetchAllStructureDefinitions()", new Object[] { });
|
ourLog.info("fetchAllStructureDefinitions()", new Object[] {});
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object defaultString(Integer theLocationLine) {
|
private Object defaultString(Integer theLocationLine) {
|
||||||
return theLocationLine != null ? theLocationLine.toString() : "";
|
return theLocationLine != null ? theLocationLine.toString() : "";
|
||||||
}
|
}
|
||||||
|
@ -202,7 +209,8 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (SingleValidationMessage next : theOutput.getMessages()) {
|
for (SingleValidationMessage next : theOutput.getMessages()) {
|
||||||
ourLog.info("Result {}: {} - {}:{} {} - {}", new Object[] { index, next.getSeverity(), defaultString(next.getLocationLine()), defaultString(next.getLocationCol()), next.getLocationString(), next.getMessage() });
|
ourLog.info("Result {}: {} - {}:{} {} - {}",
|
||||||
|
new Object[] { index, next.getSeverity(), defaultString(next.getLocationLine()), defaultString(next.getLocationCol()), next.getLocationString(), next.getMessage() });
|
||||||
index++;
|
index++;
|
||||||
|
|
||||||
retVal.add(next);
|
retVal.add(next);
|
||||||
|
@ -296,14 +304,13 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
|
|
||||||
ValidationResult output = myVal.validateWithResult(input);
|
ValidationResult output = myVal.validateWithResult(input);
|
||||||
logResultsAndReturnNonInformationalOnes(output);
|
logResultsAndReturnNonInformationalOnes(output);
|
||||||
// assertEquals(output.toString(), 1, output.getMessages().size());
|
// assertEquals(output.toString(), 1, output.getMessages().size());
|
||||||
// ourLog.info(output.getMessages().get(0).getLocationString());
|
// ourLog.info(output.getMessages().get(0).getLocationString());
|
||||||
// ourLog.info(output.getMessages().get(0).getMessage());
|
// ourLog.info(output.getMessages().get(0).getMessage());
|
||||||
// assertEquals("/foo", output.getMessages().get(0).getLocationString());
|
// assertEquals("/foo", output.getMessages().get(0).getLocationString());
|
||||||
// assertEquals("Element is unknown or does not match any slice", output.getMessages().get(0).getMessage());
|
// assertEquals("Element is unknown or does not match any slice", output.getMessages().get(0).getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testValidateRawXmlResource() {
|
public void testValidateRawXmlResource() {
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
|
@ -403,8 +410,6 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testValidateResourceWithDefaultValueset() {
|
public void testValidateResourceWithDefaultValueset() {
|
||||||
Observation input = new Observation();
|
Observation input = new Observation();
|
||||||
|
@ -533,7 +538,6 @@ public class FhirInstanceValidatorDstu3Test {
|
||||||
ourLog.info(output.getMessages().get(0).getMessage());
|
ourLog.info(output.getMessages().get(0).getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void afterClassClearContext() {
|
public static void afterClassClearContext() {
|
||||||
myDefaultValidationSupport.flush();
|
myDefaultValidationSupport.flush();
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue