From 6b9f8ec487775a2993be0858d1e3b933b8b9c85e Mon Sep 17 00:00:00 2001 From: James Agnew Date: Tue, 30 Aug 2016 18:27:57 -0400 Subject: [PATCH] Fix unit tests --- .../uhn/fhir/util/ResourceReferenceInfo.java | 5 +- .../dstu2/Dstu2BundleFactoryTest.java | 239 +++++++++--------- 2 files changed, 124 insertions(+), 120 deletions(-) diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ResourceReferenceInfo.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ResourceReferenceInfo.java index 76d8aa19fb6..780ff0871f2 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ResourceReferenceInfo.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ResourceReferenceInfo.java @@ -95,12 +95,13 @@ public class ResourceReferenceInfo { int colonIndex = theInclude.getValue().indexOf(':'); if (colonIndex != -1) { // DSTU2+ style + String resourceName = theInclude.getValue().substring(0, colonIndex); String paramName = theInclude.getValue().substring(colonIndex + 1); - RuntimeResourceDefinition resourceDef = myContext.getResourceDefinition(myOwningResource); + RuntimeResourceDefinition resourceDef = myContext.getResourceDefinition(resourceName); if (resourceDef != null) { RuntimeSearchParam searchParamDef = resourceDef.getSearchParam(paramName); if (searchParamDef!=null) { - if (searchParamDef.getPathsSplit().contains(resourceDef.getName() + "." + myName)) { + if (searchParamDef.getPathsSplit().contains(myOwningResource + "." + myName)) { return true; } } diff --git a/hapi-fhir-structures-dstu2/src/test/java/ca/uhn/fhir/rest/server/provider/dstu2/Dstu2BundleFactoryTest.java b/hapi-fhir-structures-dstu2/src/test/java/ca/uhn/fhir/rest/server/provider/dstu2/Dstu2BundleFactoryTest.java index 4d3983127c6..0b4947afc87 100644 --- a/hapi-fhir-structures-dstu2/src/test/java/ca/uhn/fhir/rest/server/provider/dstu2/Dstu2BundleFactoryTest.java +++ b/hapi-fhir-structures-dstu2/src/test/java/ca/uhn/fhir/rest/server/provider/dstu2/Dstu2BundleFactoryTest.java @@ -28,153 +28,156 @@ import ca.uhn.fhir.rest.server.BundleInclusionRule; import ca.uhn.fhir.util.TestUtil; public class Dstu2BundleFactoryTest { - private static FhirContext ourCtx; - private List myResourceList; - private Dstu2BundleFactory myBundleFactory; + private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(Dstu2BundleFactoryTest.class); - @BeforeClass - public static void beforeClass() throws Exception { - ourCtx = FhirContext.forDstu2(); - } + private static FhirContext ourCtx; + private List myResourceList; + private Dstu2BundleFactory myBundleFactory; - @AfterClass - public static void afterClassClearContext() { - TestUtil.clearAllStaticFieldsForUnitTest(); - } + @BeforeClass + public static void beforeClass() throws Exception { + ourCtx = FhirContext.forDstu2(); + } + @AfterClass + public static void afterClassClearContext() { + TestUtil.clearAllStaticFieldsForUnitTest(); + } - @Before - public void setUp() throws Exception { - // DiagnosticReport - // Performer(practitioner) - // Subject(patient) - // Result(observation) - // Specimen(specimen1) - // Subject(patient) - // Collector(practitioner) - // Subject(patient) - // Performer(practitioner) - // Specimen(specimen2) + @Before + public void setUp() throws Exception { + // DiagnosticReport + // Performer(practitioner) + // Subject(patient) + // Result(observation) + // Specimen(specimen1) + // Subject(patient) + // Collector(practitioner) + // Subject(patient) + // Performer(practitioner) + // Specimen(specimen2) - DiagnosticReport diagnosticReport = new DiagnosticReport(); - diagnosticReport.setId("DiagnosticReport/1"); + DiagnosticReport diagnosticReport = new DiagnosticReport(); + diagnosticReport.setId("DiagnosticReport/1"); - Observation observation = new Observation(); - observation.setId("Observation/1"); + Observation observation = new Observation(); + observation.setId("Observation/1"); - Specimen specimen1 = new Specimen(); - specimen1.setId("Specimen/1"); + Specimen specimen1 = new Specimen(); + specimen1.setId("Specimen/1"); - Specimen specimen2 = new Specimen(); - specimen2.setId("Specimen/2"); + Specimen specimen2 = new Specimen(); + specimen2.setId("Specimen/2"); - Practitioner practitioner = new Practitioner(); - practitioner.setId("Practitioner/1"); + Practitioner practitioner = new Practitioner(); + practitioner.setId("Practitioner/1"); - Patient patient = new Patient(); - patient.setId("Patient/1"); + Patient patient = new Patient(); + patient.setId("Patient/1"); - diagnosticReport.setPerformer(new ResourceReferenceDt(practitioner)); - diagnosticReport.setSubject(new ResourceReferenceDt(patient)); - diagnosticReport.setResult(Arrays.asList(new ResourceReferenceDt[]{new ResourceReferenceDt(observation)})); - diagnosticReport.setSpecimen(Arrays.asList(new ResourceReferenceDt(specimen2))); + diagnosticReport.setPerformer(new ResourceReferenceDt(practitioner)); + diagnosticReport.setSubject(new ResourceReferenceDt(patient)); + diagnosticReport.setResult(Arrays.asList(new ResourceReferenceDt[] { new ResourceReferenceDt(observation) })); + diagnosticReport.setSpecimen(Arrays.asList(new ResourceReferenceDt(specimen2))); - observation.setSpecimen(new ResourceReferenceDt(specimen1)); - observation.setSubject(new ResourceReferenceDt(patient)); - observation.setPerformer(Arrays.asList(new ResourceReferenceDt[]{new ResourceReferenceDt(practitioner)})); + observation.setSpecimen(new ResourceReferenceDt(specimen1)); + observation.setSubject(new ResourceReferenceDt(patient)); + observation.setPerformer(Arrays.asList(new ResourceReferenceDt[] { new ResourceReferenceDt(practitioner) })); - specimen1.setSubject(new ResourceReferenceDt(patient)); - specimen1.getCollection().setCollector(new ResourceReferenceDt(practitioner)); + specimen1.setSubject(new ResourceReferenceDt(patient)); + specimen1.getCollection().setCollector(new ResourceReferenceDt(practitioner)); - myResourceList = Arrays.asList(new IBaseResource[]{diagnosticReport}); + myResourceList = Arrays.asList(new IBaseResource[] { diagnosticReport }); - myBundleFactory = new Dstu2BundleFactory(ourCtx); - } + myBundleFactory = new Dstu2BundleFactory(ourCtx); + } - @Test - public void whenIncludeIsAsterisk_bundle_shouldContainAllReferencedResources() throws Exception { - Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes(new String("*"))); + @Test + public void whenIncludeIsAsterisk_bundle_shouldContainAllReferencedResources() throws Exception { + Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes(new String("*"))); - assertEquals(6, bundle.getEntry().size()); - assertEquals(2, numberOfEntriesOfType(bundle, Specimen.class)); - } + assertEquals(6, bundle.getEntry().size()); + assertEquals(2, numberOfEntriesOfType(bundle, Specimen.class)); + } - @Test - public void whenIncludeIsNull_bundle_shouldOnlyContainPrimaryResource() throws Exception { - Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, null); - assertEquals(1, bundle.getEntry().size()); - assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); - } + @Test + public void whenIncludeIsNull_bundle_shouldOnlyContainPrimaryResource() throws Exception { + Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, null); + assertEquals(1, bundle.getEntry().size()); + assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); + } - @Test - public void whenIncludeIsDiagnosticReportSubject_bundle_shouldIncludePatient() throws Exception { - Set includes = includes(DiagnosticReport.INCLUDE_SUBJECT.getValue()); + @Test + public void whenIncludeIsDiagnosticReportSubject_bundle_shouldIncludePatient() throws Exception { + Set includes = includes(DiagnosticReport.INCLUDE_SUBJECT.getValue()); Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes); - assertEquals(2, bundle.getEntry().size()); - assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); - assertEquals(1, numberOfEntriesOfType(bundle, Patient.class)); - } + assertEquals(2, bundle.getEntry().size()); + assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); + assertEquals(1, numberOfEntriesOfType(bundle, Patient.class)); + } + + @Test + public void whenAChainedResourceIsIncludedAndItsParentIsAlsoIncluded_bundle_shouldContainTheChainedResource() throws Exception { + Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes(DiagnosticReport.INCLUDE_RESULT.getValue(), Observation.INCLUDE_SPECIMEN.getValue())); - @Test - public void whenAChainedResourceIsIncludedAndItsParentIsAlsoIncluded_bundle_shouldContainTheChainedResource() throws Exception { - Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes(DiagnosticReport.INCLUDE_RESULT.getValue(), Observation.INCLUDE_SPECIMEN.getValue())); + ourLog.info(ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(bundle)); + + assertEquals(3, bundle.getEntry().size()); + assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); + assertEquals(1, numberOfEntriesOfType(bundle, Observation.class)); + assertEquals(1, numberOfEntriesOfType(bundle, Specimen.class)); + List specimens = getResourcesOfType(bundle, Specimen.class); + assertEquals(1, specimens.size()); + assertEquals("1", specimens.get(0).getId().getIdPart()); + } - assertEquals(3, bundle.getEntry().size()); - assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); - assertEquals(1, numberOfEntriesOfType(bundle, Observation.class)); - assertEquals(1, numberOfEntriesOfType(bundle, Specimen.class)); - List specimens = getResourcesOfType(bundle, Specimen.class); - assertEquals(1, specimens.size()); - assertEquals("1", specimens.get(0).getId().getIdPart()); - } + @Test + public void whenAChainedResourceIsIncludedButItsParentIsNot_bundle_shouldNotContainTheChainedResource() throws Exception { + Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes(Observation.INCLUDE_SPECIMEN.getValue())); - @Test - public void whenAChainedResourceIsIncludedButItsParentIsNot_bundle_shouldNotContainTheChainedResource() throws Exception { - Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_INCLUDES, includes(Observation.INCLUDE_SPECIMEN.getValue())); + assertEquals(1, bundle.getEntry().size()); + assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); + } - assertEquals(1, bundle.getEntry().size()); - assertEquals(1, numberOfEntriesOfType(bundle, DiagnosticReport.class)); - } + @Test + public void whenBundleInclusionRuleSetToResourcePresence_bundle_shouldContainAllResources() throws Exception { + Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_RESOURCE_PRESENCE, null); - @Test - public void whenBundleInclusionRuleSetToResourcePresence_bundle_shouldContainAllResources() throws Exception { - Bundle bundle = makeBundle(BundleInclusionRule.BASED_ON_RESOURCE_PRESENCE, null); + assertEquals(6, bundle.getEntry().size()); + assertEquals(2, numberOfEntriesOfType(bundle, Specimen.class)); + } - assertEquals(6, bundle.getEntry().size()); - assertEquals(2, numberOfEntriesOfType(bundle, Specimen.class)); - } + Bundle makeBundle(BundleInclusionRule theBundleInclusionRule, Set theIncludes) { + myBundleFactory.addResourcesToBundle(myResourceList, null, "http://foo", theBundleInclusionRule, theIncludes); + return (Bundle) myBundleFactory.getResourceBundle(); + } - Bundle makeBundle(BundleInclusionRule theBundleInclusionRule, Set theIncludes) { - myBundleFactory.addResourcesToBundle(myResourceList, null, "http://foo", theBundleInclusionRule, theIncludes); - return (Bundle) myBundleFactory.getResourceBundle(); - } + private Set includes(String... includes) { + Set includeSet = new HashSet(); + for (String include : includes) { + includeSet.add(new Include(include)); + } + return includeSet; + } - private Set includes(String... includes) { - Set includeSet = new HashSet(); - for (String include : includes) { - includeSet.add(new Include(include)); - } - return includeSet; - } + private int numberOfEntriesOfType(Bundle theBundle, Class theResourceClass) { + int count = 0; + for (Bundle.Entry entry : theBundle.getEntry()) { + if (theResourceClass.isAssignableFrom(entry.getResource().getClass())) + count++; + } + return count; + } - private int numberOfEntriesOfType(Bundle theBundle, Class theResourceClass) { - int count = 0; - for (Bundle.Entry entry : theBundle.getEntry()) { - if (theResourceClass.isAssignableFrom(entry.getResource().getClass())) - count++; - } - return count; - } - - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") private List getResourcesOfType(Bundle theBundle, Class theResourceClass) { - List resources = new ArrayList(); - for (Bundle.Entry entry : theBundle.getEntry()) { - if (theResourceClass.isAssignableFrom(entry.getResource().getClass())) { - resources.add((T) entry.getResource()); - } - } - return resources; - } + List resources = new ArrayList(); + for (Bundle.Entry entry : theBundle.getEntry()) { + if (theResourceClass.isAssignableFrom(entry.getResource().getClass())) { + resources.add((T) entry.getResource()); + } + } + return resources; + } } \ No newline at end of file