package ca.uhn.fhir.model.dstu2; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.AfterClass; import org.junit.Test; import ca.uhn.fhir.context.BaseRuntimeDeclaredChildDefinition; import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.RuntimeResourceDefinition; import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt; import ca.uhn.fhir.model.dstu2.composite.CodingDt; import ca.uhn.fhir.model.dstu2.composite.IdentifierDt; import ca.uhn.fhir.model.dstu2.composite.MetaDt; import ca.uhn.fhir.model.dstu2.resource.Appointment; import ca.uhn.fhir.model.dstu2.resource.Claim; import ca.uhn.fhir.model.dstu2.resource.Patient; import ca.uhn.fhir.model.dstu2.resource.Practitioner; import ca.uhn.fhir.model.dstu2.resource.Practitioner.PractitionerRole; import ca.uhn.fhir.util.FhirTerser; import ca.uhn.fhir.util.TestUtil; public class ModelDstu2Test { private static FhirContext ourCtx = FhirContext.forDstu2(); @Test public void testCompositeNames() { assertEquals(MetaDt.class, ourCtx.getElementDefinition("meta").getImplementingClass()); } @Test public void testModelBindings() { FhirTerser t = ourCtx.newTerser(); RuntimeResourceDefinition def = ourCtx.getResourceDefinition(Patient.class); assertEquals("http://hl7.org/fhir/ValueSet/administrative-gender", ((BaseRuntimeDeclaredChildDefinition)def.getChildByName("gender")).getBindingValueSet()); assertEquals("http://hl7.org/fhir/ValueSet/link-type", ((BaseRuntimeDeclaredChildDefinition)t.getDefinition(Patient.class, "Patient.link.type")).getBindingValueSet()); def = ourCtx.getResourceDefinition(Appointment.class); assertEquals("http://hl7.org/fhir/ValueSet/appointmentstatus", ((BaseRuntimeDeclaredChildDefinition)def.getChildByName("status")).getBindingValueSet()); } /** * See #320 */ @Test public void testDontUseBoundCodeForExampleBinding() { Practitioner p = new Practitioner(); PractitionerRole role = p.addPractitionerRole(); CodeableConceptDt roleField = role.getRole(); assertEquals(CodeableConceptDt.class, roleField.getClass()); } /** * See #304 */ @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void testPopulateWrongGenericType() { Patient p = new Patient(); List names = Arrays.asList("name"); p.setName(names); try { ourCtx.newXmlParser().encodeResourceToString(p); } catch (ClassCastException e) { assertEquals("Found instance of class java.lang.String - Did you set a field value to the incorrect type? Expected org.hl7.fhir.instance.model.api.IBase", e.getMessage()); } } /** * See #354 */ @Test public void testSetters() { Claim claim = new Claim(); claim.setIdentifier(new ArrayList<IdentifierDt>()).setCondition(new ArrayList<CodingDt>()); } @AfterClass public static void afterClassClearContext() { TestUtil.clearAllStaticFieldsForUnitTest(); } }