package org.nate.internal.dom4j;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.nate.testutil.WhiteSpaceIgnoringXmlMatcher.matchesXmlIgnoringWhiteSpace;
import java.io.ByteArrayInputStream;
import java.util.List;
import org.junit.Test;
import org.nate.encoder.NateDocument;
import org.nate.encoder.NateNode;
public class Dom4jBackedDocumentFragmentTest {
@Test
public void shouldFindDesiredElements() throws Exception {
NateNode document = createDocumentFragment("apple<div><p>apple</p> hello <p>banana</p></div> ");
List<NateNode> elements = document.find("p");
assertThat("Unexpected size for: " + elements, elements.size(), is(2));
assertThat(elements.get(0).render(), matchesXmlIgnoringWhiteSpace("<p>apple</p>"));
assertThat(elements.get(1).render(), matchesXmlIgnoringWhiteSpace("<p>banana</p>"));
}
@Test
public void shouldFindAnEmptyListWhenNothingMatches() throws Exception {
NateNode document = createDocumentFragment("apple<div></div>");
List<NateNode> elements = document.find("p");
assertThat("Unexpected size for: " + elements, elements.size(), is(0));
}
@Test
public void shouldCopyDesiredElements() throws Exception {
String original = "apple<body><div>a<div>b</div></div>x<div>c</div></body> ";
NateDocument document = createDocumentFragment(original);
NateNode copy = document.copy("div");
assertThat(copy.render(), matchesXmlIgnoringWhiteSpace("<div>a<div>b</div></div><div>b</div><div>c</div>"));
assertThat(document.render(), matchesXmlIgnoringWhiteSpace(original));
}
private NateDocument createDocumentFragment(String input) {
return new Dom4jBackedNateDocumentFactory()
.createFromXmlDocumentFragment(new ByteArrayInputStream(input.getBytes()));
}
}