package pl.edu.icm.saos.importer.notapi.nationalappealchamber.judgment.json;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doThrow;
import javax.validation.ValidationException;
import org.joda.time.LocalDate;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import pl.edu.icm.saos.common.json.JsonNormalizer;
import pl.edu.icm.saos.common.json.JsonStringParser;
import pl.edu.icm.saos.common.validation.CommonValidator;
import pl.edu.icm.saos.importer.notapi.common.SourceJudgment.Source;
import pl.edu.icm.saos.importer.notapi.common.SourceJudgment.SourceJudge;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import com.google.common.collect.Lists;
/**
* @author madryk
*/
@RunWith(MockitoJUnitRunner.class)
public class SourceNacJudgmentParserTest {
private JsonStringParser<SourceNacJudgment> sourceNacJudgmentParser = new JsonStringParser<>(SourceNacJudgment.class);
@Mock
private CommonValidator commonValidator;
private static String jsonContent = "{"
+ "'textContent' : 'Sygn. akt: KIO/UZP 525/10 ...',"
+ "'judgmentType' : 'SENTENCE',"
+ "'judgmentDate' : '2010-04-26',"
+ "'courtReporters' : [ 'Agata Dziuban' ],"
+ "'judges' : [ {"
+ "'name' : 'Małgorzata Stręciwilk',"
+ "'specialRoles' : [ 'PRESIDING_JUDGE' ]"
+ "}, {"
+ "'name' : 'Ewa Sikorska',"
+ "'specialRoles' : [ ]"
+ "}, {"
+ "'name' : 'Robert Skrzeszewski',"
+ "'specialRoles' : [ ]"
+ "} ],"
+ "'caseNumber' : [ 'KIO/UZP 525/10', 'KIO/UZP 551/10' ],"
+ "'source' : {"
+ "'sourceJudgmentPdfMD5' : '9112dc5dcd793b50115abd39bcdd4e74',"
+ "'sourceJudgmentId' : '9112dc5dcd793b50115abd39bcdd4e74',"
+ "'sourceJudgmentUrl' : 'ftp://ftp.uzp.gov.pl/KIO/Wyroki/2010_0525__551.pdf',"
+ "'sourceCode' : 'NATIONAL_APPEALS_CHAMBER'"
+ "} }";
@Before
public void before() {
jsonContent = JsonNormalizer.normalizeJson(jsonContent);
sourceNacJudgmentParser.setJsonFactory(new MappingJsonFactory());
sourceNacJudgmentParser.setCommonValidator(commonValidator);
}
//------------------------ TESTS --------------------------
@Test
public void parse() throws JsonParseException {
// execute
SourceNacJudgment sourceNacJudgment = sourceNacJudgmentParser.parseAndValidate(jsonContent);
// assert
assertEquals("Sygn. akt: KIO/UZP 525/10 ...", sourceNacJudgment.getTextContent());
assertEquals("SENTENCE", sourceNacJudgment.getJudgmentType());
assertEquals(new LocalDate(2010, 4, 26), sourceNacJudgment.getJudgmentDate());
assertEquals(Lists.newArrayList("Agata Dziuban"), sourceNacJudgment.getCourtReporters());
assertEquals(3, sourceNacJudgment.getJudges().size());
SourceJudge firstJudge = sourceNacJudgment.getJudges().get(0);
assertEquals("Małgorzata Stręciwilk", firstJudge.getName());
assertEquals(Lists.newArrayList("PRESIDING_JUDGE"), firstJudge.getSpecialRoles());
SourceJudge secondJudge = sourceNacJudgment.getJudges().get(1);
assertEquals("Ewa Sikorska", secondJudge.getName());
assertEquals(Lists.newArrayList(), secondJudge.getSpecialRoles());
SourceJudge thirdJudge = sourceNacJudgment.getJudges().get(2);
assertEquals("Robert Skrzeszewski", thirdJudge.getName());
assertEquals(Lists.newArrayList(), thirdJudge.getSpecialRoles());
assertEquals(Lists.newArrayList("KIO/UZP 525/10", "KIO/UZP 551/10"), sourceNacJudgment.getCaseNumbers());
Source source = sourceNacJudgment.getSource();
assertEquals("9112dc5dcd793b50115abd39bcdd4e74", source.getSourceJudgmentId());
assertEquals("ftp://ftp.uzp.gov.pl/KIO/Wyroki/2010_0525__551.pdf", source.getSourceJudgmentUrl());
}
@Test(expected=ValidationException.class)
public void parse_INVALID() throws JsonParseException {
// given
doThrow(ValidationException.class).when(commonValidator).validateEx(any(SourceNacJudgment.class));
// execute
sourceNacJudgmentParser.parseAndValidate(jsonContent);
}
}