package gov.samhsa.consent2share.c32;
import gov.samhsa.consent2share.c32.dto.GreenCCD;
import gov.samhsa.consent2share.commonunit.io.ResourceFileReader;
import org.junit.Assert;
import org.junit.Test;
public class GreenCcdSerializerImplTest {
@Test(expected = IllegalArgumentException.class)
public void testDeserialize_Given_Null_GreenCcdXml_Throws_IllegalArgumentException() throws Throwable {
// Arrange
GreenCcdSerializerImpl sut = new GreenCcdSerializerImpl();
// Act
sut.Deserialize(null);
}
@Test(expected = IllegalArgumentException.class)
public void testDeserialize_Given_Empty_GreenCcdXml_Throws_IllegalArgumentException() throws Throwable {
// Arrange
GreenCcdSerializerImpl sut = new GreenCcdSerializerImpl();
// Act
sut.Deserialize("");
}
@Test(expected = IllegalArgumentException.class)
public void testDeserialize_Given_NoText_GreenCcdXml_Throws_IllegalArgumentException() throws Throwable {
// Arrange
GreenCcdSerializerImpl sut = new GreenCcdSerializerImpl();
// Act
sut.Deserialize(" ");
}
@Test
public void testDeserialize_Given_Valid_GreenCcd_Succeeds() throws Throwable {
// Arrange
GreenCcdSerializerImpl sut = new GreenCcdSerializerImpl();
// Read green ccd file from resource
final String greenCcdXmlFileUri = "green_ccd_2.xml";
String greenCcdXml = ResourceFileReader.getStringFromResourceFile(greenCcdXmlFileUri);
// Act
GreenCCD greenCcd = sut.Deserialize(greenCcdXml);
// Assert
Assert.assertEquals("2.16.840.1.113883.3.72", greenCcd.getHeader().getDocumentID().getRoot());
Assert.assertEquals("streetAddressLine", greenCcd.getHeader().getPersonalInformation().getPatientInformation().getPersonAddress().get(0).getStreetAddressLine().get(0));
Assert.assertEquals("city", greenCcd.getHeader().getPersonalInformation().getPatientInformation().getPersonAddress().get(0).getCity());
Assert.assertEquals("state", greenCcd.getHeader().getPersonalInformation().getPatientInformation().getPersonAddress().get(0).getState());
Assert.assertEquals("postalCode", greenCcd.getHeader().getPersonalInformation().getPatientInformation().getPersonAddress().get(0).getPostalCode());
Assert.assertEquals("Levin", greenCcd.getHeader().getPersonalInformation().getPatientInformation().getPersonInformation().get(0).getPersonName().get(0).getFamily());
Assert.assertEquals("Henry", greenCcd.getHeader().getPersonalInformation().getPatientInformation().getPersonInformation().get(0).getPersonName().get(0).getGiven());
Assert.assertEquals("family", greenCcd.getHeader().getInformationSource().getAuthor().getAuthorName().getFamily());
Assert.assertEquals("given", greenCcd.getHeader().getInformationSource().getAuthor().getAuthorName().getGiven());
Assert.assertEquals("Hospital", greenCcd.getHeader().getInformationSource().getInformationSourceName().getOrganizationName().getContent());
Assert.assertEquals(1, greenCcd.getBody().getResults().getResult().size());
Assert.assertEquals("M 13-18 g/dl; F 12-16 g/dl", greenCcd.getBody().getResults().getResult().get(0).getResultReferenceRange().get(0));
Assert.assertEquals(1, greenCcd.getBody().getEncounters().getEncounter().size());
Assert.assertEquals("Dolin", greenCcd.getBody().getEncounters().getEncounter().get(0).getEncounterProvider().get(0).getProviderName().getFamily());
Assert.assertEquals("Good Health Clinic", greenCcd.getBody().getEncounters().getEncounter().get(0).getEncounterProvider().get(0).getProviderOrganizationName().getContent());
Assert.assertEquals(1, greenCcd.getBody().getMedications().getMedication().size());
Assert.assertEquals("This is the text of the Patient Instruction. Note that this instruction is printed in the narrative text of the parent Section and is refereced by the following pointer to it.", greenCcd.getBody().getMedications().getMedication().get(0).getPatientInstructions().trim());
Assert.assertEquals("Don't forget your medication", greenCcd.getBody().getMedications().getMedication().get(0).getFulfillmentInstructions().trim());
}
@Test(expected=GreenCcdSerializerException.class)
public void testDeserialize_Given_InValid_GreenCcd_Throws_GreenCcdSerializerException() throws Throwable {
// Arrange
GreenCcdSerializerImpl sut = new GreenCcdSerializerImpl();
String greenCcdXml = "<Invalid>GreenCcd</Invalid>";
// Act
GreenCCD greenCcd = sut.Deserialize(greenCcdXml);
}
}