package gov.samhsa.consent2share.showcase.service;
import static org.junit.Assert.assertEquals;
import gov.samhsa.acs.common.tool.DocumentAccessorImpl;
import gov.samhsa.acs.common.tool.DocumentXmlConverterImpl;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
public class XmlAttributeSetterImplTest {
private final String XML_STRING_NO_EXISTING_ATTRIBUTE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><TestXml xmlns=\"urn:hl7-org:v3\"><TestItem></TestItem></TestXml>";
private final String XML_STRING_WITH_ATTRIBUTE_EMPTY_VALUE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><TestXml xmlns=\"urn:hl7-org:v3\"><TestItem TestAttribute=\"\"></TestItem></TestXml>";
private final String XML_STRING_WITH_ATTRIBUTE_NOT_EMPTY_VALUE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><TestXml xmlns=\"urn:hl7-org:v3\"><TestItem TestAttribute=\"SomeValue\"></TestItem></TestXml>";
private final String EXPECTED_OUTPUT = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><TestXml xmlns=\"urn:hl7-org:v3\"> <TestItem TestAttribute=\"TestValue\"/></TestXml>";
private final String XPATH_EXPR = "//hl7:TestXml/child::hl7:TestItem";
private final String TEST_ATTRIBUTE = "TestAttribute";
private final String TEST_VALUE = "TestValue";
private XmlAttributeSetterImpl sut;
@Before
public void setUp() throws Exception {
// Arrange
sut = new XmlAttributeSetterImpl();
ReflectionTestUtils.setField(sut, "documentXmlConverter",
new DocumentXmlConverterImpl());
ReflectionTestUtils.setField(sut, "documentAccessor",
new DocumentAccessorImpl());
}
@Test
public void testSetAttributeValue_With_Existing_Attribute_Empty_Value()
throws Exception {
// Act
final String actualOutput = sut.setAttributeValue(
XML_STRING_WITH_ATTRIBUTE_EMPTY_VALUE, XPATH_EXPR,
TEST_ATTRIBUTE, TEST_VALUE);
// Assert
assertEquals(EXPECTED_OUTPUT, actualOutput);
}
@Test
public void testSetAttributeValue_With_Existing_Attribute_Not_Empty_Value()
throws Exception {
// Act
final String actualOutput = sut.setAttributeValue(
XML_STRING_WITH_ATTRIBUTE_NOT_EMPTY_VALUE, XPATH_EXPR,
TEST_ATTRIBUTE, TEST_VALUE);
// Assert
assertEquals(EXPECTED_OUTPUT, actualOutput);
}
@Test
public void testSetAttributeValue_Without_Existing_Attribute()
throws Exception {
// Act
final String actualOutput = sut.setAttributeValue(
XML_STRING_NO_EXISTING_ATTRIBUTE, XPATH_EXPR, TEST_ATTRIBUTE,
TEST_VALUE);
// Assert
assertEquals(EXPECTED_OUTPUT, actualOutput);
}
}