package pl.edu.icm.saos.importer.notapi.supremecourt.judgment.json; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import javax.validation.ValidationException; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; 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.common.ImportDateTimeFormatter; import pl.edu.icm.saos.importer.notapi.common.DateTimeDeserializer; 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 Łukasz Dumiszewski */ public class SourceScJudgmentParserTest { private JsonStringParser<SourceScJudgment> sourceScJudgmentParser = new JsonStringParser<>(SourceScJudgment.class); @Mock private ImportDateTimeFormatter dateTimeFormatter; @Mock private CommonValidator commonValidator; private static String jsonContent = "{textContent:'Wyrok z dnia 22 lutego 1994 r.', /* comment should pass */ "+ "judges:[" + "{name:'Józef Iwulski',function:null,specialRoles:['REPORTING_JUDGE']}, " + "{name:'Jacek Hero',function:'SSN',specialRoles:['REPORTING_JUDGE', 'XXX']}]," + "source:" + "{sourceJudgmentPdfMD5:'16f3a55e22605d8b8fe26f42de45ba9c'," + "sourceJudgmentHtmlMD5:'220dfd859f5f6a57c8ea7739a531cd42'," + "sourceCode:'SUPREME_COURT',sourceJudgmentId:'Orzeczenia1&3042'," + "sourceJudgmentUrl:'http://www.sn.pl/orzecznictwo/SitePages/Baza%20orzecze%C5%84.aspx?ItemID=3042&ListName=Orzeczenia1'," + "publicationDateTime:'2014-02-11 11:43'}," + "caseNumber:'I PRN 5/94'," + "judgmentDate:'1994-02-22'," + "supremeCourtJudgmentForm:'wyrok SN'," + "personnelType:null," + "receiptDate : '2001-01-04'," + "meansOfAppeal : 'kasacja'," + "judgmentResult : 'uchylono i przekazano do ponownego rozpoznania'," + "lowerCourtJudgments : [ 'II Kws 5/00 - wyrok z dnia 13 marca 2000 r. - Sąd Rejonowy Strzelce Krajeńskie', '(Kw 141/99) Kw 141/99 - orzeczenie z dnia 26 stycznia 2000 r. - Kolegium d/s Wykroczeń przy SR w Strzelcach Krajeńskich' ]," + "supremeCourtChambers:['Izba Administracyjna, Pracy i Ubezpieczeń Społecznych']," + "supremeCourtChamberDivision:'Izba Pracy, Ubezpieczeń Społecznych i Spraw Publicznych Wydział I'}"; @Before public void before() { MockitoAnnotations.initMocks(this); jsonContent = JsonNormalizer.normalizeJson(jsonContent); sourceScJudgmentParser.setJsonFactory(new MappingJsonFactory()); DateTimeDeserializer.setImportDateTimeFormatter(dateTimeFormatter); sourceScJudgmentParser.setCommonValidator(commonValidator); } @Test public void parse() throws JsonParseException { // given DateTime dateTime = new DateTime(2014, 2, 11, 11, 43); Mockito.when(dateTimeFormatter.parse(Mockito.eq("2014-02-11 11:43"))).thenReturn(dateTime); // execute SourceScJudgment sourceScJudgment = sourceScJudgmentParser.parseAndValidate(jsonContent); // assert assertEquals("Wyrok z dnia 22 lutego 1994 r.", sourceScJudgment.getTextContent()); assertEquals("I PRN 5/94", sourceScJudgment.getCaseNumber()); assertEquals(new LocalDate(1994, 2, 22), sourceScJudgment.getJudgmentDate()); assertEquals("wyrok SN", sourceScJudgment.getSupremeCourtJudgmentForm()); assertNull(sourceScJudgment.getPersonnelType()); assertEquals(Lists.newArrayList("Izba Administracyjna, Pracy i Ubezpieczeń Społecznych"), sourceScJudgment.getSupremeCourtChambers()); assertEquals("Izba Pracy, Ubezpieczeń Społecznych i Spraw Publicznych Wydział I", sourceScJudgment.getSupremeCourtChamberDivision()); assertEquals("uchylono i przekazano do ponownego rozpoznania", sourceScJudgment.getJudgmentResult()); assertEquals("kasacja", sourceScJudgment.getMeansOfAppeal()); assertEquals(new LocalDate(2001, 1, 4), sourceScJudgment.getReceiptDate()); assertEquals(2, sourceScJudgment.getLowerCourtJudgments().size()); assertEquals("II Kws 5/00 - wyrok z dnia 13 marca 2000 r. - Sąd Rejonowy Strzelce Krajeńskie", sourceScJudgment.getLowerCourtJudgments().get(0)); assertEquals("(Kw 141/99) Kw 141/99 - orzeczenie z dnia 26 stycznia 2000 r. - Kolegium d/s Wykroczeń przy SR w Strzelcach Krajeńskich", sourceScJudgment.getLowerCourtJudgments().get(1)); Source source = sourceScJudgment.getSource(); assertEquals("Orzeczenia1&3042", source.getSourceJudgmentId()); assertEquals("http://www.sn.pl/orzecznictwo/SitePages/Baza%20orzecze%C5%84.aspx?ItemID=3042&ListName=Orzeczenia1", source.getSourceJudgmentUrl()); assertEquals(dateTime, source.getPublicationDateTime()); assertEquals(2, sourceScJudgment.getJudges().size()); SourceJudge judge = sourceScJudgment.getJudges().get(0); assertEquals("Józef Iwulski", judge.getName()); assertNull(judge.getFunction()); assertEquals(Lists.newArrayList("REPORTING_JUDGE"), judge.getSpecialRoles()); judge = sourceScJudgment.getJudges().get(1); assertEquals("Jacek Hero", judge.getName()); assertEquals("SSN", judge.getFunction()); assertEquals(Lists.newArrayList("REPORTING_JUDGE", "XXX"), judge.getSpecialRoles()); } @Test(expected=ValidationException.class) public void parse_JudgeNameNull() throws JsonParseException { // given DateTime dateTime = new DateTime(2014, 2, 11, 11, 43); Mockito.when(dateTimeFormatter.parse(Mockito.eq("2014-02-11 11:43"))).thenReturn(dateTime); Mockito.doThrow(ValidationException.class).when(commonValidator).validateEx(Mockito.any(SourceScJudgment.class)); // execute sourceScJudgmentParser.parseAndValidate(jsonContent); } }