package com.ausregistry.jtoolkit2.tmdb.xml;
import static org.hamcrest.Matchers.sameInstance;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.verify;
import static org.powermock.api.mockito.PowerMockito.whenNew;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import com.ausregistry.jtoolkit2.tmdb.model.TmCourt;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.w3c.dom.Node;
@RunWith(PowerMockRunner.class)
@PrepareForTest({TmCourtXmlParser.class})
public class TmCourtXmlParserTest {
@Mock
private TmCourt mockCourt;
private TmCourtXmlParser tmCourtXmlParser = new TmCourtXmlParser();
@Before
public void setUp() throws Exception {
whenNew(TmCourt.class).withNoArguments().thenReturn(mockCourt);
}
@Test
public void shouldParseReferenceNumberCorrectly() throws Exception {
String courtXml = "<tmNotice:court><tmNotice:refNum>234235</tmNotice:refNum></tmNotice:court>";
TmCourt court = tmCourtXmlParser.parse(nodeForString(courtXml));
assertThat(court, sameInstance(mockCourt));
verify(mockCourt).setReferenceNumber(234235L);
}
@Test
public void shouldParseCountryCodeCorrectly() throws Exception {
String courtXml = "<tmNotice:court><tmNotice:cc>CR</tmNotice:cc></tmNotice:court>";
tmCourtXmlParser.parse(nodeForString(courtXml));
verify(mockCourt).setCountryCode("CR");
}
@Test
public void shouldParseRegionsCorrectly() throws Exception {
String courtXml = "<tmNotice:court>" +
"<tmNotice:region>region 1</tmNotice:region>" +
"<tmNotice:region>region 2</tmNotice:region>" +
"</tmNotice:court>";
tmCourtXmlParser.parse(nodeForString(courtXml));
verify(mockCourt).addRegion("region 1");
verify(mockCourt).addRegion("region 2");
}
@Test
public void shouldParseCourtNameCorrectly() throws Exception {
String courtXml = "<tmNotice:court>" +
"<tmNotice:courtName>Supreme Court of Justice of Costa Rica</tmNotice:courtName>" +
"</tmNotice:court>";
tmCourtXmlParser.parse(nodeForString(courtXml));
verify(mockCourt).setCourtName("Supreme Court of Justice of Costa Rica");
}
private Node nodeForString(String xmlFragment) throws Exception {
return DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new ByteArrayInputStream(xmlFragment.getBytes()))
.getDocumentElement();
}
}