package pl.edu.icm.saos.importer.notapi.constitutionaltribunal.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 pl.edu.icm.saos.importer.notapi.constitutionaltribunal.judgment.json.SourceCtJudgment.SourceCtDissentingOpinion; 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 SourceCtJudgmentParserTest { private JsonStringParser<SourceCtJudgment> sourceScJudgmentParser = new JsonStringParser<>(SourceCtJudgment.class); @Mock private CommonValidator commonValidator; private static String jsonContent = "{" + "'courtReporters' : [ 'Grażyna Szałygo' ]," + "'dissentingOpinions' : [ {" + "'textContent' : 'Zdanie odrębne Sędziów Trybunału Konstytucyjnego ...'," + "'authors' : [ 'Teresa Dębowska-Romanowska', 'Bohdan Zdziennicki' ]" + "} ]," + "'caseNumber' : 'P 25/02'," + "'judges' : [ {" + "'name' : 'Teresa Dębowska-Romanowska'," + "'specialRoles' : [ 'PRESIDING_JUDGE' ]" + "}, {" + "'name' : 'Mirosław Wyrzykowski'," + "'specialRoles' : [ 'REPORTING_JUDGE' ]" + "}, {" + "'name' : 'Bohdan Zdziennicki'," + "'specialRoles' : [ ]" + "} ]," + "'source' : {" + "'sourceJudgmentDocMD5' : '3b42a6299303c65d869c4806fdcdbf7a'," + "'sourceJudgmentId' : '3b42a6299303c65d869c4806fdcdbf7a'," + "'sourceJudgmentUrl' : 'http://otk.trybunal.gov.pl/orzeczenia/teksty/otk/2005/P_25_02.doc'," + "'sourceCode' : 'CONSTITUTIONAL_TRIBUNAL'" + "}," + "'judgmentDate' : '2005-06-21'," + "'textContent' : '65/6/A/2005 WYROK z dnia 21 czerwca 2005 ...'," + "'judgmentType' : 'SENTENCE'" + "}"; @Before public void before() { jsonContent = JsonNormalizer.normalizeJson(jsonContent); sourceScJudgmentParser.setJsonFactory(new MappingJsonFactory()); sourceScJudgmentParser.setCommonValidator(commonValidator); } //------------------------ TESTS -------------------------- @Test public void parse() throws JsonParseException { // execute SourceCtJudgment sourceScJudgment = sourceScJudgmentParser.parseAndValidate(jsonContent); // assert assertEquals(Lists.newArrayList("Grażyna Szałygo"), sourceScJudgment.getCourtReporters()); assertEquals("P 25/02", sourceScJudgment.getCaseNumber()); assertEquals(1, sourceScJudgment.getDissentingOpinions().size()); SourceCtDissentingOpinion dissentingOpinion = sourceScJudgment.getDissentingOpinions().get(0); assertEquals("Zdanie odrębne Sędziów Trybunału Konstytucyjnego ...", dissentingOpinion.getTextContent()); assertEquals(Lists.newArrayList("Teresa Dębowska-Romanowska", "Bohdan Zdziennicki"), dissentingOpinion.getAuthors()); assertEquals(3, sourceScJudgment.getJudges().size()); SourceJudge firstJudge = sourceScJudgment.getJudges().get(0); assertEquals("Teresa Dębowska-Romanowska", firstJudge.getName()); assertEquals(Lists.newArrayList("PRESIDING_JUDGE"), firstJudge.getSpecialRoles()); SourceJudge secondJudge = sourceScJudgment.getJudges().get(1); assertEquals("Mirosław Wyrzykowski", secondJudge.getName()); assertEquals(Lists.newArrayList("REPORTING_JUDGE"), secondJudge.getSpecialRoles()); SourceJudge thirdJudge = sourceScJudgment.getJudges().get(2); assertEquals("Bohdan Zdziennicki", thirdJudge.getName()); assertEquals(Lists.newArrayList(), thirdJudge.getSpecialRoles()); Source source = sourceScJudgment.getSource(); assertEquals("3b42a6299303c65d869c4806fdcdbf7a", source.getSourceJudgmentId()); assertEquals("http://otk.trybunal.gov.pl/orzeczenia/teksty/otk/2005/P_25_02.doc", source.getSourceJudgmentUrl()); assertEquals(new LocalDate(2005, 6, 21), sourceScJudgment.getJudgmentDate()); assertEquals("65/6/A/2005 WYROK z dnia 21 czerwca 2005 ...", sourceScJudgment.getTextContent()); assertEquals("SENTENCE", sourceScJudgment.getJudgmentType()); } @Test(expected=ValidationException.class) public void parse_INVALID() throws JsonParseException { // given doThrow(ValidationException.class).when(commonValidator).validateEx(any(SourceCtJudgment.class)); // execute sourceScJudgmentParser.parseAndValidate(jsonContent); } }