Add test for invalid local reference (DSTU3)

Currently an invalid local reference causes an InternalErrorException
caused by: FHIRException: Resource resolution services not provided.
The validation should instead return normally and contain an error
message.
This commit is contained in:
Heinz-Dieter Conradi 2018-02-28 15:48:43 +01:00 committed by Heinz-Dieter Conradi
parent f766156ca3
commit 229e0977d2
1 changed files with 23 additions and 0 deletions

View File

@ -17,12 +17,16 @@ import org.hl7.fhir.dstu3.hapi.ctx.IValidationSupport.CodeValidationResult;
import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent;
import org.hl7.fhir.dstu3.model.Enumerations.PublicationStatus;
import org.hl7.fhir.dstu3.model.Observation.ObservationStatus;
import org.hl7.fhir.dstu3.model.Questionnaire.QuestionnaireItemComponent;
import org.hl7.fhir.dstu3.model.Questionnaire.QuestionnaireItemType;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent;
import org.hl7.fhir.dstu3.utils.FHIRPathEngine;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.junit.*;
import org.junit.rules.TestRule;
import org.junit.rules.TestWatcher;
@ -737,6 +741,25 @@ public class FhirInstanceValidatorDstu3Test {
assertThat(nonInfo, empty());
}
/**
* An invalid local reference should not cause a ServiceException.
*/
@Test
public void testInvalidLocalReference() {
Questionnaire resource = new Questionnaire();
resource.setStatus(PublicationStatus.ACTIVE);
QuestionnaireItemComponent item = new QuestionnaireItemComponent();
item.setLinkId("linkId-1");
item.setType(QuestionnaireItemType.CHOICE);
item.setOptions(new Reference("#invalid-ref"));
resource.addItem(item);
ValidationResult output = myVal.validateWithResult(resource);
List<SingleValidationMessage> nonInfo = logResultsAndReturnNonInformationalOnes(output);
assertThat(nonInfo, hasSize(2));
}
/**
* See #370
*/