package gov.samhsa.consent2share.hl7;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
import gov.samhsa.acs.common.exception.DS4PException;
import gov.samhsa.acs.common.tool.XmlTransformer;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Optional;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class Hl7v3TransformerImplTest {
@Mock
private XmlTransformer xmlTransformer;
@InjectMocks
private Hl7v3TransformerImpl sut;
@Test
public void testGetPixQueryXml() throws IOException, URISyntaxException,
Hl7v3TransformerException {
// Arrange
final String mrnMock = "mrnMock";
final String mrnDomainMock = "mrnDomainMock";
final String picQueryxml = FileUtils.readFileToString(new File(
getClass().getClassLoader()
.getResource("xml/c32ToHl7v3PixQuery.xsl").toURI()));
// String picQueryxml = "xm/c32ToHl7v3PixQuery.xsl";
// Act
final String hl7v3PixXML = sut.getPixQueryXml(mrnMock, mrnDomainMock,
picQueryxml);
// Assert
assertNotNull(hl7v3PixXML);
}
@Test
public void testTransformC32ToHl7v3PixXml() throws IOException,
URISyntaxException, Hl7v3TransformerException {
// Arrange
final String transformedXmlMock = "transformedXmlMock";
final String c32XMLString = FileUtils
.readFileToString(new File(getClass().getClassLoader()
.getResource("xml/c32.xml").toURI()));
when(
xmlTransformer.transform(eq(c32XMLString), anyString(),
any(Optional.class), any(Optional.class))).thenReturn(
transformedXmlMock);
// Act
final String hl7v3PixXML = sut.transformToHl7v3PixXml(c32XMLString,
Hl7v3Transformer.XSLT_C32_TO_PIX_ADD);
// Assert
assertNotNull(hl7v3PixXML);
assertEquals(transformedXmlMock, hl7v3PixXML);
}
@SuppressWarnings("unchecked")
@Test(expected = Hl7v3TransformerException.class)
public void testTransformC32ToHl7v3PixXml_exception() throws IOException,
URISyntaxException, Hl7v3TransformerException {
// Arrange
final String c32XMLString = FileUtils
.readFileToString(new File(getClass().getClassLoader()
.getResource("xml/c32.xml").toURI()));
when(
xmlTransformer.transform(eq(c32XMLString), anyString(),
any(Optional.class), any(Optional.class))).thenThrow(
DS4PException.class);
// Act
final String hl7v3PixXML = sut.transformToHl7v3PixXml(c32XMLString,
Hl7v3Transformer.XSLT_C32_TO_PIX_ADD);
// Assert
assertNotNull(hl7v3PixXML);
}
@Test
public void testTransformC32ToHl7v3PixXml_hl7v3exception()
throws IOException, URISyntaxException, Hl7v3TransformerException {
// Arrange
final String errorMsg = " Testing Error Msg";
// Act
final Hl7v3TransformerException hl7v3 = new Hl7v3TransformerException(
errorMsg);
// Assert
assertEquals(errorMsg, hl7v3.getMessage());
}
}