package pl.edu.icm.saos.persistence.repository; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.List; import java.util.stream.Collectors; import javax.persistence.EntityNotFoundException; import javax.transaction.Transactional; import org.hibernate.LazyInitializationException; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import com.google.common.collect.Lists; import pl.edu.icm.saos.common.testcommon.category.SlowTest; import pl.edu.icm.saos.persistence.PersistenceTestSupport; import pl.edu.icm.saos.persistence.common.TestInMemoryObjectFactory; import pl.edu.icm.saos.persistence.common.TestPersistenceObjectFactory; import pl.edu.icm.saos.persistence.model.CommonCourtJudgment; import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgment; import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgmentDissentingOpinion; import pl.edu.icm.saos.persistence.model.CourtCase; import pl.edu.icm.saos.persistence.model.Judge; import pl.edu.icm.saos.persistence.model.Judge.JudgeRole; import pl.edu.icm.saos.persistence.model.Judgment; import pl.edu.icm.saos.persistence.model.JudgmentSourceInfo; import pl.edu.icm.saos.persistence.model.JudgmentTextContent; import pl.edu.icm.saos.persistence.model.SourceCode; import pl.edu.icm.saos.persistence.model.SupremeCourtJudgment; /** * @author Ɓukasz Dumiszewski */ @Category(SlowTest.class) public class JudgmentRepositoryTest extends PersistenceTestSupport { @Autowired private JudgmentRepository judgmentRepository; @Autowired private TestPersistenceObjectFactory testPersistenceObjectFactory; //------------------------ TESTS -------------------------- @Test public void testSaveAndGet() { // given Assert.assertEquals(0, judgmentRepository.count()); CommonCourtJudgment judgment = new CommonCourtJudgment(); judgment.addCourtCase(new CourtCase("222")); judgment.getSourceInfo().setSourceCode(SourceCode.SUPREME_COURT); judgment.getSourceInfo().setSourceJudgmentId("11111"); // execute judgmentRepository.save(judgment); // assert Assert.assertEquals(1, judgmentRepository.count()); } @Test public void save_iterable() { // given CommonCourtJudgment judgment1 = new CommonCourtJudgment(); judgment1.addCourtCase(new CourtCase("AAA1")); judgment1.getSourceInfo().setSourceCode(SourceCode.COMMON_COURT); judgment1.getSourceInfo().setSourceJudgmentId("1"); judgment1.getSourceInfo().setReviser("reviser name"); CommonCourtJudgment judgment2 = new CommonCourtJudgment(); judgment2.addCourtCase(new CourtCase("AAA2")); judgment2.getSourceInfo().setSourceCode(SourceCode.COMMON_COURT); judgment2.getSourceInfo().setSourceJudgmentId("2"); judgment2.setJudgmentDate(new LocalDate(2013, 5, 2)); DateTime beforeSave = new DateTime(); waitForTimeChange(); // execute judgmentRepository.save(Lists.newArrayList(judgment1, judgment2)); // assert assertEquals(2, judgmentRepository.count()); Judgment retJudgment1 = judgmentRepository.findOne(judgment1.getId()); Judgment retJudgment2 = judgmentRepository.findOne(judgment2.getId()); assertTrue(retJudgment1.getModificationDate().isAfter(beforeSave)); assertFalse(retJudgment1.isIndexed()); assertNull(retJudgment1.getIndexedDate()); assertEquals("reviser name", retJudgment1.getSourceInfo().getReviser()); assertTrue(retJudgment2.getModificationDate().isAfter(beforeSave)); assertFalse(retJudgment2.isIndexed()); assertNull(retJudgment2.getIndexedDate()); assertEquals(new LocalDate(2013, 5, 2), retJudgment2.getJudgmentDate()); } @Test public void save_iterable_UPDATE() { // given Judgment judgment1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); Judgment judgment2 = createCcJudgment(SourceCode.COMMON_COURT, "2", "AAA2"); judgmentRepository.markAsIndexed(judgment1.getId()); judgmentRepository.markAsIndexed(judgment2.getId()); judgment1 = judgmentRepository.findOne(judgment1.getId()); judgment2 = judgmentRepository.findOne(judgment2.getId()); judgment1.setSummary("new summary"); judgment1.getSourceInfo().setReviser("new reviser name"); judgment2.setJudgmentDate(new LocalDate(2012, 9, 22)); waitForTimeChange(); DateTime beforeSave = new DateTime(); waitForTimeChange(); // execute judgmentRepository.save(Lists.newArrayList(judgment1, judgment2)); // assert assertEquals(2, judgmentRepository.count()); Judgment retJudgment1 = judgmentRepository.findOne(judgment1.getId()); Judgment retJudgment2 = judgmentRepository.findOne(judgment2.getId()); assertTrue(retJudgment1.getModificationDate().isAfter(beforeSave)); assertTrue(retJudgment1.getIndexedDate().isBefore(beforeSave)); assertFalse(retJudgment1.isIndexed()); assertEquals("new summary", retJudgment1.getSummary()); assertEquals("new reviser name", retJudgment1.getSourceInfo().getReviser()); assertTrue(retJudgment2.getModificationDate().isAfter(beforeSave)); assertTrue(retJudgment2.getIndexedDate().isBefore(beforeSave)); assertFalse(retJudgment2.isIndexed()); assertEquals(new LocalDate(2012, 9, 22), retJudgment2.getJudgmentDate()); } @Test public void saveAndFlush() { // given CommonCourtJudgment judgment = new CommonCourtJudgment(); judgment.addCourtCase(new CourtCase("AAA1")); judgment.getSourceInfo().setSourceCode(SourceCode.COMMON_COURT); judgment.getSourceInfo().setSourceJudgmentId("1"); DateTime beforeSave = new DateTime(); waitForTimeChange(); // execute judgmentRepository.saveAndFlush(judgment); // assert assertEquals(1, judgmentRepository.count()); Judgment retJudgment = judgmentRepository.findOne(judgment.getId()); assertTrue(retJudgment.getModificationDate().isAfter(beforeSave)); } @Test public void count_WITH_CLASS() { // when createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); createCcJudgment(SourceCode.COMMON_COURT, "2", "AAA2"); createScJudgment(SourceCode.SUPREME_COURT, "3", "AAA3"); // execute long actualCount = judgmentRepository.count(CommonCourtJudgment.class); // then assertEquals(2, actualCount); } @Test public void findAllIds() { // given Judgment judgment1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); Judgment judgment2 = createCcJudgment(SourceCode.COMMON_COURT, "2", "AAA2"); Judgment judgment3 = createScJudgment(SourceCode.SUPREME_COURT, "3", "AAA3"); // execute List<Long> judgmentIds = judgmentRepository.findAllIds(); // assert assertThat(judgmentIds, containsInAnyOrder(judgment1.getId(), judgment2.getId(), judgment3.getId())); } @Test public void findAllIdsBySourceCode() { // given Judgment judgment1 = createCcJudgment(SourceCode.COMMON_COURT, "sourceId_1", "AAA1"); createScJudgment(SourceCode.SUPREME_COURT, "sourceId_1", "AAA2"); createCcJudgment(SourceCode.SUPREME_COURT, "sourceId_3", "AAA3"); Judgment judgment4 = createCcJudgment(SourceCode.COMMON_COURT, "sourceId_4", "AAA4"); // execute List<Long> judgmentIds = judgmentRepository.findAllIdsBySourceCode(SourceCode.COMMON_COURT); // assert assertThat(judgmentIds, containsInAnyOrder(judgment1.getId(), judgment4.getId())); } @Test public void findAllIdsBySourceCodeAndSourceJudgmentIds() { // given Judgment judgment1 = createCcJudgment(SourceCode.COMMON_COURT, "sourceId_1", "AAA1"); createScJudgment(SourceCode.SUPREME_COURT, "sourceId_1", "AAA2"); createCcJudgment(SourceCode.SUPREME_COURT, "sourceId_3", "AAA3"); Judgment judgment4 = createCcJudgment(SourceCode.COMMON_COURT, "sourceId_4", "AAA4"); createCcJudgment(SourceCode.COMMON_COURT, "sourceId_5", "AAA5"); // execute List<Long> judgmentIds = judgmentRepository.findAllIdsBySourceCodeAndSourceJudgmentIds( SourceCode.COMMON_COURT, Lists.newArrayList("sourceId_1", "sourceId_4")); // assert assertThat(judgmentIds, containsInAnyOrder(judgment1.getId(), judgment4.getId())); } @Test public void findOneBySourceCodeAndSourceJudgmentId_NOT_FOUND() { // execute Judgment ccJudgment = judgmentRepository.findOneBySourceCodeAndSourceJudgmentId(SourceCode.COMMON_COURT, "111122"); // assert assertNull(ccJudgment); } @Test public void findOneBySourceCodeAndSourceJudgmentId_FOUND() { // given CommonCourtJudgment ccJudgment = TestInMemoryObjectFactory.createSimpleCcJudgment(); JudgmentSourceInfo sourceInfo = new JudgmentSourceInfo(); sourceInfo.setSourceCode(SourceCode.COMMON_COURT); sourceInfo.setSourceJudgmentId("1123"); ccJudgment.setSourceInfo(sourceInfo); judgmentRepository.save(ccJudgment); // execute Judgment dbCcJudgment = judgmentRepository.findOneBySourceCodeAndSourceJudgmentId(SourceCode.COMMON_COURT, "1123"); // assert assertNotNull(dbCcJudgment); assertEquals(ccJudgment.getId(), dbCcJudgment.getId()); } @Test public void findOneBySourceCodeAndSourceJudgmentId_WITH_CLASS_NOT_FOUND() { // given SupremeCourtJudgment scJudgment = testPersistenceObjectFactory.createScJudgment(); // execute CommonCourtJudgment ccJudgment = judgmentRepository.findOneBySourceCodeAndSourceJudgmentId( scJudgment.getSourceInfo().getSourceCode(), scJudgment.getSourceInfo().getSourceJudgmentId(), CommonCourtJudgment.class); // assert assertNull(ccJudgment); } @Test public void findOneBySourceCodeAndSourceJudgmentId_WITH_CLASS_FOUND() { // given CommonCourtJudgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); JudgmentSourceInfo sourceInfo = ccJudgment.getSourceInfo(); // execute CommonCourtJudgment dbCcJudgment = judgmentRepository.findOneBySourceCodeAndSourceJudgmentId( SourceCode.COMMON_COURT, sourceInfo.getSourceJudgmentId(), CommonCourtJudgment.class); // assert assertNotNull(dbCcJudgment); assertEquals(ccJudgment.getId(), dbCcJudgment.getId()); } @Test public void findBySourceCodeAndCaseNumber_NOT_FOUND() { // execute List<Judgment> ccJudgments = judgmentRepository.findBySourceCodeAndCaseNumber(SourceCode.COMMON_COURT, "111122"); // assert assertEquals(0, ccJudgments.size()); } @Test public void findBySourceCodeAndCaseNumber_FOUND() { // given CommonCourtJudgment ccJudgment1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); createCcJudgment(SourceCode.COMMON_COURT, "2", "AAA2"); createCcJudgment(SourceCode.COMMON_COURT, "3", "AAA3"); createCcJudgment(SourceCode.ADMINISTRATIVE_COURT, "1", "AAA1"); // execute List<Judgment> ccJudgments = judgmentRepository.findBySourceCodeAndCaseNumber(SourceCode.COMMON_COURT, ccJudgment1.getCaseNumbers().get(0)); // assert assertEquals(1, ccJudgments.size()); assertEquals(ccJudgment1.getId(), ccJudgments.get(0).getId()); } @Test public void findBySourceCodeAndCaseNumber_FOUND_MultiCases() { //given CommonCourtJudgment ccJudgment1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); createCcJudgment(SourceCode.COMMON_COURT, "2", "AAA2"); createCcJudgment(SourceCode.COMMON_COURT, "3", "AAA3"); createCcJudgment(SourceCode.ADMINISTRATIVE_COURT, "1", "AAA1"); ccJudgment1.addCourtCase(new CourtCase("BBB1")); // execute List<Judgment> ccJudgments = judgmentRepository.findBySourceCodeAndCaseNumber(SourceCode.COMMON_COURT, ccJudgment1.getCaseNumbers().get(0)); // assert assertEquals(1, ccJudgments.size()); assertEquals(ccJudgment1.getId(), ccJudgments.get(0).getId()); } @Test public void findOneAndInitialize_Judgment() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); // execute Judgment dbJudgment = judgmentRepository.findOneAndInitialize(ccJudgment.getId()); // assert assertNotNull(dbJudgment); dbJudgment.getJudges().size(); dbJudgment.getJudges().get(0).getSpecialRoles().size(); dbJudgment.getReferencedRegulations().size(); dbJudgment.getReferencedRegulations().get(0).getLawJournalEntry().getTitle(); dbJudgment.getCourtReporters().size(); dbJudgment.getLegalBases().size(); } @Test public void findOneAndInitialize_CommonCourtJudgment() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); // execute CommonCourtJudgment dbJudgment = judgmentRepository.findOneAndInitialize(ccJudgment.getId()); // assert assertNotNull(dbJudgment); dbJudgment.getCourtDivision().getCourt().getCode(); dbJudgment.getKeywords().size(); } @Test public void findOneAndInitialize_SupremeCourtJudgment() { // given Judgment scJudgment = testPersistenceObjectFactory.createScJudgment(); // execute SupremeCourtJudgment dbJudgment = judgmentRepository.findOneAndInitialize(scJudgment.getId()); // assert assertNotNull(dbJudgment); dbJudgment.getScChamberDivision().getName(); dbJudgment.getScChambers().size(); dbJudgment.getScJudgmentForm().getName(); } @Test(expected=LazyInitializationException.class) public void findOne_Uninitialized() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); // execute Judgment dbJudgment = judgmentRepository.findOne(ccJudgment.getId()); // assert assertNotNull(dbJudgment); dbJudgment.getJudges().size(); } @Test(expected=EntityNotFoundException.class) public void findOneAndInitialize_NOT_FOUND() { // execute judgmentRepository.findOneAndInitialize(987654l); } @Test public void markAsNotIndexedBySourceCode_ONLY_CC_JUDGMENTS() { // given CommonCourtJudgment ccJudgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); SupremeCourtJudgment scJudgment = createScJudgment(SourceCode.SUPREME_COURT, "2", "AAA2"); judgmentRepository.markAsIndexed(ccJudgment.getId()); judgmentRepository.markAsIndexed(scJudgment.getId()); // execute judgmentRepository.markAsNotIndexedBySourceCode(SourceCode.COMMON_COURT); // assert Judgment actualCcJudgment = judgmentRepository.findOne(ccJudgment.getId()); Judgment actualScJudgment = judgmentRepository.findOne(scJudgment.getId()); assertFalse(actualCcJudgment.isIndexed()); assertTrue(actualScJudgment.isIndexed()); } @Test public void markAsNotIndexedBySourceCode_ALL_JUDGMENTS() { // given CommonCourtJudgment ccJudgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); SupremeCourtJudgment scJudgment = createScJudgment(SourceCode.SUPREME_COURT, "2", "AAA2"); judgmentRepository.markAsIndexed(ccJudgment.getId()); judgmentRepository.markAsIndexed(scJudgment.getId()); // execute judgmentRepository.markAsNotIndexedBySourceCode(null); // assert Judgment actualCcJudgment = judgmentRepository.findOne(ccJudgment.getId()); Judgment actualScJudgment = judgmentRepository.findOne(scJudgment.getId()); assertFalse(actualCcJudgment.isIndexed()); assertFalse(actualScJudgment.isIndexed()); } @Test @Transactional public void it_should_update_modification_date_on_judgment_change(){ //given CommonCourtJudgment judgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); judgmentRepository.save(judgment); DateTime firstModificationDate = judgment.getModificationDate(); //when judgment.setDecision("some decision"); waitForTimeChange(); judgmentRepository.save(judgment); DateTime secondModificationDate = judgmentRepository.findOne(judgment.getId()).getModificationDate(); //then assertNotNull(firstModificationDate); assertNotNull(secondModificationDate); assertTrue(secondModificationDate.isAfter(firstModificationDate)); } @Test @Transactional public void it_should_update_modification_date_on_judgment_collection_change(){ //given CommonCourtJudgment judgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); judgmentRepository.save(judgment); DateTime firstModificationDate = judgment.getModificationDate(); //when judgment.addJudge(new Judge("John Doe", JudgeRole.PRESIDING_JUDGE)); waitForTimeChange(); judgmentRepository.save(judgment); DateTime secondModificationDate = judgmentRepository.findOne(judgment.getId()).getModificationDate(); //then assertNotNull(firstModificationDate); assertNotNull(secondModificationDate); assertTrue(secondModificationDate.isAfter(firstModificationDate)); } @Test public void delete_JudgmentIds_All() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); Judgment scJudgment = testPersistenceObjectFactory.createScJudgment(); Judgment ctJudgment = testPersistenceObjectFactory.createCtJudgment(); Judgment nacJudgment = testPersistenceObjectFactory.createNacJudgment(); assertEquals(4, judgmentRepository.count()); // execute judgmentRepository.delete(Lists.newArrayList(ccJudgment.getId(), scJudgment.getId(), ctJudgment.getId(), nacJudgment.getId())); // assert assertEquals(0, judgmentRepository.count()); } @Test public void delete_JudgmentIds_AFew() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); Judgment scJudgment = testPersistenceObjectFactory.createScJudgment(); Judgment ctJudgment = testPersistenceObjectFactory.createCtJudgment(); Judgment nacJudgment = testPersistenceObjectFactory.createNacJudgment(); assertEquals(4, judgmentRepository.count()); // execute judgmentRepository.delete(Lists.newArrayList(ctJudgment.getId(), nacJudgment.getId())); // assert assertEquals(2, judgmentRepository.count()); List<Long> judgmentIds = judgmentRepository.findAll().stream().map(j->j.getId()).collect(Collectors.toList()); assertThat(judgmentIds, containsInAnyOrder(scJudgment.getId(), ccJudgment.getId())); } @Test public void delete() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); Judgment scJudgment = testPersistenceObjectFactory.createScJudgment(); Judgment ctJudgment = testPersistenceObjectFactory.createCtJudgment(); Judgment nacJudgment = testPersistenceObjectFactory.createNacJudgment(); assertEquals(4, judgmentRepository.count()); // execute judgmentRepository.delete(ccJudgment); judgmentRepository.delete(scJudgment); judgmentRepository.delete(ctJudgment); judgmentRepository.delete(nacJudgment); // assert assertEquals(0, judgmentRepository.count()); } @Test public void delete_ById() { // given Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment(); Judgment scJudgment = testPersistenceObjectFactory.createScJudgment(); Judgment ctJudgment = testPersistenceObjectFactory.createCtJudgment(); Judgment nacJudgment = testPersistenceObjectFactory.createNacJudgment(); assertEquals(4, judgmentRepository.count()); // execute judgmentRepository.delete(ccJudgment.getId()); judgmentRepository.delete(scJudgment.getId()); judgmentRepository.delete(ctJudgment.getId()); judgmentRepository.delete(nacJudgment.getId()); // assert assertEquals(0, judgmentRepository.count()); } @Test public void deleteAll() { // given testPersistenceObjectFactory.createCcJudgment(); testPersistenceObjectFactory.createScJudgment(); testPersistenceObjectFactory.createCtJudgment(); testPersistenceObjectFactory.createNacJudgment(); assertEquals(4, judgmentRepository.count()); // execute judgmentRepository.deleteAll(); // assert assertEquals(0, judgmentRepository.count()); } @Test public void filterIdsToExisting() { // given long judgmentId1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AA1").getId(); long judgmentId2 = createCcJudgment(SourceCode.COMMON_COURT, "2", "AA2").getId(); long notExistingJudgmentId = Math.max(judgmentId1, judgmentId2) + 1; // execute List<Long> filtered = judgmentRepository.filterIdsToExisting(Lists.newArrayList(judgmentId1, judgmentId2, notExistingJudgmentId)); // assert assertThat(filtered, containsInAnyOrder(judgmentId1, judgmentId2)); } @Test public void ctJudgment_opinions_should_be_initialized(){ //given ConstitutionalTribunalJudgment tribunalJudgment =testPersistenceObjectFactory.createCtJudgment(); //when ConstitutionalTribunalJudgment ctJudgment = judgmentRepository.findOneAndInitialize(tribunalJudgment.getId()); //then ConstitutionalTribunalJudgmentDissentingOpinion actual = ctJudgment.getDissentingOpinions().get(0); ConstitutionalTribunalJudgmentDissentingOpinion expected = tribunalJudgment.getDissentingOpinions().get(0); assertThat("opinion id ", actual.getId(), is(expected.getId())); assertThat("opinion ", actual, is(expected)); } @Test public void getJudgment_NOT_NULL_TEXT_CONTENT() { // given Judgment judgment = TestInMemoryObjectFactory.createSimpleNacJudgment(); JudgmentTextContent textContent = new JudgmentTextContent(); textContent.setRawTextContent("raw content"); judgment.setTextContent(textContent); judgmentRepository.save(judgment); // execute Judgment actualJudgment = judgmentRepository.findOneAndInitialize(judgment.getId()); // assert assertNotNull("judgment text content is null", actualJudgment.getTextContent()); assertEquals("raw content", actualJudgment.getTextContent().getRawTextContent()); } @Test public void markAsIndexed() { // given Judgment judgment1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AA1"); waitForTimeChange(); DateTime beforeIndexed = new DateTime(); // execute waitForTimeChange(); judgmentRepository.markAsIndexed(judgment1.getId()); waitForTimeChange(); DateTime afterIndexed = new DateTime(); // assert Judgment actualJudgment = judgmentRepository.findOne(judgment1.getId()); assertTrue(actualJudgment.isIndexed()); assertTrue(actualJudgment.getIndexedDate().isAfter(beforeIndexed)); assertTrue(actualJudgment.getIndexedDate().isBefore(afterIndexed)); assertTrue(actualJudgment.getModificationDate().isBefore(beforeIndexed)); } @Test public void markAsNotIndexed() { // given Judgment judgment1 = createCcJudgment(SourceCode.COMMON_COURT, "1", "AA1"); Judgment judgment2 = createCcJudgment(SourceCode.COMMON_COURT, "2", "AA2"); Judgment judgment3 = createCcJudgment(SourceCode.COMMON_COURT, "3", "AA3"); judgmentRepository.markAsIndexed(judgment1.getId()); judgmentRepository.markAsIndexed(judgment3.getId()); // execute judgmentRepository.markAsNotIndexed(Lists.newArrayList(judgment1.getId(), judgment2.getId())); // assert assertFalse(judgmentRepository.findOne(judgment1.getId()).isIndexed()); assertFalse(judgmentRepository.findOne(judgment2.getId()).isIndexed()); assertTrue(judgmentRepository.findOne(judgment3.getId()).isIndexed()); } @Test public void findAllNotIndexed_FOUND() { // given createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); // execute Page<Judgment> judgments = judgmentRepository.findAllNotIndexed(new PageRequest(0, 10)); // assert assertEquals(1, judgments.getTotalElements()); } @Test public void findAllNotIndexed_NOT_FOUND() { // given CommonCourtJudgment judgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); judgmentRepository.markAsIndexed(judgment.getId()); // execute Page<Judgment> judgments = judgmentRepository.findAllNotIndexed(new PageRequest(0, 10)); // assert assertEquals(0, judgments.getTotalElements()); } @Test public void findAllNotIndexedIds_FOUND() { // given Judgment firstJudgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); Judgment secondJudgment = createCcJudgment(SourceCode.COMMON_COURT, "2", "AAA2"); Judgment thirdJudgment = createCcJudgment(SourceCode.COMMON_COURT, "3", "AAA3"); // execute List<Long> notIndexed = judgmentRepository.findAllNotIndexedIds(); // assert assertThat(notIndexed, containsInAnyOrder(firstJudgment.getId(), secondJudgment.getId(), thirdJudgment.getId())); } @Test public void findAllNotIndexedIds_NOT_FOUND() { // given CommonCourtJudgment judgment = createCcJudgment(SourceCode.COMMON_COURT, "1", "AAA1"); judgmentRepository.markAsIndexed(judgment.getId()); // execute List<Long> notIndexed = judgmentRepository.findAllNotIndexedIds(); // assert assertEquals(0, notIndexed.size()); } //------------------------ PRIVATE -------------------------- private CommonCourtJudgment createCcJudgment(SourceCode sourceCode, String sourceJudgmentId, String caseNumber) { CommonCourtJudgment ccJudgment = new CommonCourtJudgment(); JudgmentSourceInfo sourceInfo = new JudgmentSourceInfo(); sourceInfo.setSourceCode(sourceCode); sourceInfo.setSourceJudgmentId(sourceJudgmentId); ccJudgment.setSourceInfo(sourceInfo); ccJudgment.addCourtCase(new CourtCase(caseNumber)); judgmentRepository.save(ccJudgment); return ccJudgment; } private SupremeCourtJudgment createScJudgment(SourceCode sourceCode, String sourceJudgmentId, String caseNumber) { SupremeCourtJudgment scJudgment = new SupremeCourtJudgment(); JudgmentSourceInfo sourceInfo = new JudgmentSourceInfo(); sourceInfo.setSourceCode(sourceCode); sourceInfo.setSourceJudgmentId(sourceJudgmentId); scJudgment.setSourceInfo(sourceInfo); scJudgment.addCourtCase(new CourtCase(caseNumber)); judgmentRepository.save(scJudgment); return scJudgment; } private void waitForTimeChange() { try { Thread.sleep(10); } catch (InterruptedException e) { } } }