package ca.uhn.fhir.parser.i391; import static org.junit.Assert.*; import org.junit.AfterClass; import org.junit.Test; import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.model.primitive.BoundCodeDt; import ca.uhn.fhir.model.primitive.StringDt; import ca.uhn.fhir.parser.CustomTypeDstu2Test; import ca.uhn.fhir.parser.IParser; import ca.uhn.fhir.util.TestUtil; /** * See #391 */ public class TestOutcomeTest { private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(CustomTypeDstu2Test.class); @Test public void testCustomDataTypeBugN2_UnknownElement() { CustomBlock nameDt = new CustomBlock(); nameDt.ourValue = new StringDt("testText"); CustomOperationOutcome outcome = new CustomOperationOutcome(); outcome.element2 = nameDt; IParser parser = FhirContext.forDstu2().newXmlParser(); String outcomeString = parser.setPrettyPrint(true).encodeResourceToString(outcome); ourLog.info(outcomeString); assertEquals("<OperationOutcome xmlns=\"http://hl7.org/fhir\">" + "<meta>" + "<profile value=\"http://hl7.org/fhir/profiles/custom-operation-outcome\"/>" + "</meta>" + "<extension url=\"#someElement2\">" + "<valueString value=\"testText\"/>" + "</extension>" + "</OperationOutcome>", parser.setPrettyPrint(false).encodeResourceToString(outcome)); CustomOperationOutcome parsedOutcome = parser.parseResource(CustomOperationOutcome.class, outcomeString); ourLog.info(outcomeString); // assertNotNull(parsedOutcome.element2); // assertNotNull(parsedOutcome.element2.ourValue); } @Test public void testParseBoundCodeDtJson() { IParser jsonParser = FhirContext.forDstu2().newJsonParser(); TestOutcome outcome = new TestOutcome(); outcome.setElement(new BoundCodeDt<OutcomeEnum>(new OutcomeBinder(), OutcomeEnum.ITEM1)); String xmlResource = jsonParser.encodeResourceToString(outcome); TestOutcome operationOutcome = jsonParser.parseResource(TestOutcome.class, xmlResource); assertNotNull(operationOutcome.getElement()); assertTrue(operationOutcome.getElement() instanceof BoundCodeDt); assertEquals(outcome.getElement(), operationOutcome.getElement()); } @Test public void testParseBoundCodeDtXml() { IParser xmlParser = FhirContext.forDstu2().newXmlParser(); TestOutcome outcome = new TestOutcome(); outcome.setElement(new BoundCodeDt<OutcomeEnum>(new OutcomeBinder(), OutcomeEnum.ITEM1)); String xmlResource = xmlParser.encodeResourceToString(outcome); TestOutcome operationOutcome = xmlParser.parseResource(TestOutcome.class, xmlResource); assertNotNull(operationOutcome.getElement()); assertTrue(operationOutcome.getElement() instanceof BoundCodeDt); assertEquals(outcome.getElement(), operationOutcome.getElement()); } @AfterClass public static void afterClassClearContext() { TestUtil.clearAllStaticFieldsForUnitTest(); } }