Add a disabled test
This commit is contained in:
parent
9aaf5ccd63
commit
b044d05332
|
@ -584,7 +584,6 @@
|
||||||
|
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<skip-hib4>false</skip-hib4>
|
|
||||||
<jackson.version>2.7.1</jackson.version>
|
<jackson.version>2.7.1</jackson.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
@ -804,12 +803,6 @@
|
||||||
</reporting>
|
</reporting>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
<profile>
|
|
||||||
<id>JENKINS</id>
|
|
||||||
<properties>
|
|
||||||
<skip-hib4>true</skip-hib4>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>NOPARALLEL</id>
|
<id>NOPARALLEL</id>
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -9,6 +9,7 @@ import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
|
||||||
import ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException;
|
import ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException;
|
||||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||||
|
import org.apache.commons.lang3.Validate;
|
||||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
import org.apache.commons.lang3.time.DateUtils;
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
|
@ -89,6 +90,7 @@ class VersionSpecificWorkerContextWrapper extends I18nBase implements IWorkerCon
|
||||||
if (canonical instanceof StructureDefinition) {
|
if (canonical instanceof StructureDefinition) {
|
||||||
if (((StructureDefinition) canonical).getSnapshot().isEmpty()) {
|
if (((StructureDefinition) canonical).getSnapshot().isEmpty()) {
|
||||||
fetched = myValidationSupport.generateSnapshot(myValidationSupport, fetched, "", null, "");
|
fetched = myValidationSupport.generateSnapshot(myValidationSupport, fetched, "", null, "");
|
||||||
|
Validate.isTrue(fetched != null, "StructureDefinition %s has no snapshot, and no snapshot generator is configured", key.getUri());
|
||||||
canonical = myModelConverter.toCanonical(fetched);
|
canonical = myModelConverter.toCanonical(fetched);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport;
|
||||||
import org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService;
|
import org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService;
|
||||||
import org.hl7.fhir.common.hapi.validation.support.InMemoryTerminologyServerValidationSupport;
|
import org.hl7.fhir.common.hapi.validation.support.InMemoryTerminologyServerValidationSupport;
|
||||||
import org.hl7.fhir.common.hapi.validation.support.PrePopulatedValidationSupport;
|
import org.hl7.fhir.common.hapi.validation.support.PrePopulatedValidationSupport;
|
||||||
|
import org.hl7.fhir.common.hapi.validation.support.SnapshotGeneratingValidationSupport;
|
||||||
import org.hl7.fhir.common.hapi.validation.support.ValidationSupportChain;
|
import org.hl7.fhir.common.hapi.validation.support.ValidationSupportChain;
|
||||||
import org.hl7.fhir.common.hapi.validation.validator.FhirInstanceValidator;
|
import org.hl7.fhir.common.hapi.validation.validator.FhirInstanceValidator;
|
||||||
import org.hl7.fhir.exceptions.FHIRException;
|
import org.hl7.fhir.exceptions.FHIRException;
|
||||||
|
@ -116,6 +117,7 @@ public class FhirInstanceValidatorR4Test extends BaseTest {
|
||||||
private FhirValidator myVal;
|
private FhirValidator myVal;
|
||||||
private ArrayList<String> myValidConcepts;
|
private ArrayList<String> myValidConcepts;
|
||||||
private Set<String> myValidSystems = new HashSet<>();
|
private Set<String> myValidSystems = new HashSet<>();
|
||||||
|
private Map<String, StructureDefinition> myStructureDefinitionMap = new HashMap<>();
|
||||||
private CachingValidationSupport myValidationSupport;
|
private CachingValidationSupport myValidationSupport;
|
||||||
|
|
||||||
private void addValidConcept(String theSystem, String theCode) {
|
private void addValidConcept(String theSystem, String theCode) {
|
||||||
|
@ -149,7 +151,7 @@ public class FhirInstanceValidatorR4Test extends BaseTest {
|
||||||
IValidationSupport mockSupport = mock(IValidationSupport.class);
|
IValidationSupport mockSupport = mock(IValidationSupport.class);
|
||||||
when(mockSupport.getFhirContext()).thenReturn(ourCtx);
|
when(mockSupport.getFhirContext()).thenReturn(ourCtx);
|
||||||
|
|
||||||
ValidationSupportChain chain = new ValidationSupportChain(myDefaultValidationSupport, mockSupport, new InMemoryTerminologyServerValidationSupport(ourCtx), new CommonCodeSystemsTerminologyService(ourCtx));
|
ValidationSupportChain chain = new ValidationSupportChain(myDefaultValidationSupport, mockSupport, new InMemoryTerminologyServerValidationSupport(ourCtx), new CommonCodeSystemsTerminologyService(ourCtx), new SnapshotGeneratingValidationSupport(ourCtx));
|
||||||
myValidationSupport = new CachingValidationSupport(chain);
|
myValidationSupport = new CachingValidationSupport(chain);
|
||||||
myInstanceVal = new FhirInstanceValidator(myValidationSupport);
|
myInstanceVal = new FhirInstanceValidator(myValidationSupport);
|
||||||
|
|
||||||
|
@ -187,7 +189,9 @@ public class FhirInstanceValidatorR4Test extends BaseTest {
|
||||||
IBaseResource retVal;
|
IBaseResource retVal;
|
||||||
Class<IBaseResource> clazz = (Class<IBaseResource>) theInvocation.getArguments()[0];
|
Class<IBaseResource> clazz = (Class<IBaseResource>) theInvocation.getArguments()[0];
|
||||||
String id = theInvocation.getArgument(1, String.class);
|
String id = theInvocation.getArgument(1, String.class);
|
||||||
if ("Questionnaire/q_jon".equals(id)) {
|
if (myStructureDefinitionMap.containsKey(id)) {
|
||||||
|
retVal = myStructureDefinitionMap.get(id);
|
||||||
|
} else if ("Questionnaire/q_jon".equals(id)) {
|
||||||
retVal = ourCtx.newJsonParser().parseResource(loadResource("/q_jon.json"));
|
retVal = ourCtx.newJsonParser().parseResource(loadResource("/q_jon.json"));
|
||||||
} else {
|
} else {
|
||||||
retVal = myDefaultValidationSupport.fetchResource(clazz, id);
|
retVal = myDefaultValidationSupport.fetchResource(clazz, id);
|
||||||
|
@ -236,7 +240,13 @@ public class FhirInstanceValidatorR4Test extends BaseTest {
|
||||||
when(mockSupport.fetchStructureDefinition(nullable(String.class))).thenAnswer(new Answer<IBaseResource>() {
|
when(mockSupport.fetchStructureDefinition(nullable(String.class))).thenAnswer(new Answer<IBaseResource>() {
|
||||||
@Override
|
@Override
|
||||||
public IBaseResource answer(InvocationOnMock theInvocation) {
|
public IBaseResource answer(InvocationOnMock theInvocation) {
|
||||||
IBaseResource retVal = myDefaultValidationSupport.fetchStructureDefinition((String) theInvocation.getArguments()[0]);
|
String id = (String) theInvocation.getArguments()[0];
|
||||||
|
IBaseResource retVal;
|
||||||
|
if (myStructureDefinitionMap.containsKey(id)) {
|
||||||
|
retVal = myStructureDefinitionMap.get(id);
|
||||||
|
} else {
|
||||||
|
retVal = myDefaultValidationSupport.fetchStructureDefinition(id);
|
||||||
|
}
|
||||||
ourLog.debug("fetchStructureDefinition({}) : {}", new Object[]{theInvocation.getArguments()[0], retVal});
|
ourLog.debug("fetchStructureDefinition({}) : {}", new Object[]{theInvocation.getArguments()[0], retVal});
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +254,8 @@ public class FhirInstanceValidatorR4Test extends BaseTest {
|
||||||
when(mockSupport.fetchAllStructureDefinitions()).thenAnswer(new Answer<List<StructureDefinition>>() {
|
when(mockSupport.fetchAllStructureDefinitions()).thenAnswer(new Answer<List<StructureDefinition>>() {
|
||||||
@Override
|
@Override
|
||||||
public List<StructureDefinition> answer(InvocationOnMock theInvocation) {
|
public List<StructureDefinition> answer(InvocationOnMock theInvocation) {
|
||||||
List<StructureDefinition> retVal = myDefaultValidationSupport.fetchAllStructureDefinitions();
|
List<StructureDefinition> retVal =new ArrayList<>(myDefaultValidationSupport.fetchAllStructureDefinitions());
|
||||||
|
retVal.addAll(myStructureDefinitionMap.values());
|
||||||
ourLog.debug("fetchAllStructureDefinitions()", new Object[]{});
|
ourLog.debug("fetchAllStructureDefinitions()", new Object[]{});
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
@ -393,6 +404,25 @@ public class FhirInstanceValidatorR4Test extends BaseTest {
|
||||||
assertTrue(result.isSuccessful());
|
assertTrue(result.isSuccessful());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: unignore when https://github.com/hapifhir/org.hl7.fhir.core/pull/201 is merged
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Ignore
|
||||||
|
public void testValidateFixedBindingOnQuantity() throws IOException {
|
||||||
|
StructureDefinition sd = loadResource(ourCtx, StructureDefinition.class, "/r4/bbl-fixed-binding-structuredef.json");
|
||||||
|
myStructureDefinitionMap.put("http://example.org/fhir/StructureDefinition/MyObservation", sd);
|
||||||
|
|
||||||
|
Observation obs = loadResource(ourCtx, Observation.class, "/r4/bbl-fixed-binding-observation.json");
|
||||||
|
|
||||||
|
FhirValidator val = ourCtx.newValidator();
|
||||||
|
val.registerValidatorModule(new FhirInstanceValidator(myValidationSupport));
|
||||||
|
ValidationResult result = val.validateWithResult(obs);
|
||||||
|
logResultsAndReturnAll(result);
|
||||||
|
assertFalse(result.isSuccessful());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See #1676 - We should ignore schema location
|
* See #1676 - We should ignore schema location
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"resourceType": "Observation",
|
||||||
|
"effectiveDateTime": "2019-11-01T12:41:50+00:00",
|
||||||
|
"meta": {
|
||||||
|
"profile": [
|
||||||
|
"http://example.org/fhir/StructureDefinition/MyObservation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"status": "final",
|
||||||
|
"code": {
|
||||||
|
"coding": [
|
||||||
|
{
|
||||||
|
"code": "aabbcc",
|
||||||
|
"system": "http://example.org"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"valueQuantity": {
|
||||||
|
"code": "whatever",
|
||||||
|
"system": "http://unitsofmeasure.org",
|
||||||
|
"value": 18
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"resourceType": "StructureDefinition",
|
||||||
|
"url": "http://example.org/fhir/StructureDefinition/MyObservation",
|
||||||
|
"name": "MyObservation",
|
||||||
|
"id": "MyObservation",
|
||||||
|
"status": "draft",
|
||||||
|
"fhirVersion": "4.0.1",
|
||||||
|
"kind": "resource",
|
||||||
|
"abstract": false,
|
||||||
|
"type": "Observation",
|
||||||
|
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
|
||||||
|
"derivation": "constraint",
|
||||||
|
"differential": {
|
||||||
|
"element": [
|
||||||
|
{
|
||||||
|
"id": "Observation.value[x]",
|
||||||
|
"path": "Observation.value[x]",
|
||||||
|
"min": 1,
|
||||||
|
"type": [
|
||||||
|
{
|
||||||
|
"code": "Quantity"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"binding": {
|
||||||
|
"strength": "required",
|
||||||
|
"valueSet": "http://hl7.org/fhir/ValueSet/account-type"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue