package pl.edu.icm.saos.enrichment.reference.refcases; import static org.junit.Assert.assertEquals; import static pl.edu.icm.saos.persistence.common.TestInMemoryEnrichmentTagFactory.createEnrichmentTag; import java.io.IOException; import java.util.List; import org.junit.Test; import org.junit.experimental.categories.Category; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import pl.edu.icm.saos.common.testcommon.category.SlowTest; import pl.edu.icm.saos.enrichment.EnrichmentTestSupport; import pl.edu.icm.saos.persistence.common.TestPersistenceObjectFactory; import pl.edu.icm.saos.persistence.enrichment.EnrichmentTagRepository; import pl.edu.icm.saos.persistence.enrichment.model.EnrichmentTag; import pl.edu.icm.saos.persistence.enrichment.model.EnrichmentTagTypes; import pl.edu.icm.saos.persistence.model.Judgment; import pl.edu.icm.saos.persistence.repository.JudgmentRepository; import com.google.common.collect.Lists; /** * @author madryk */ @Category(SlowTest.class) public class RefCourtCasesJudgmentReferenceRemoverTest extends EnrichmentTestSupport { @Autowired @Qualifier("refCourtCasesJudgmentReferenceRemover") private RefCourtCasesJudgmentReferenceRemover refCourtCasesJudgmentReferenceRemover; @Autowired private EnrichmentTagRepository enrichmentTagRepository; @Autowired private JudgmentRepository judgmentRepository; @Autowired private TestPersistenceObjectFactory testPersistenceObjectFactory; //------------------------ TESTS -------------------------- @Test public void removeReference_SINGLE() throws IOException { // given EnrichmentTag enrichmentTag1 = createEnrichmentTag(1, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'1234/12', judgmentIds:[1234,12]}, {caseNumber: 'AAA', judgmentIds:[]}]"); EnrichmentTag enrichmentTag2 = createEnrichmentTag(2, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'1234/12', judgmentIds:[12]}]"); EnrichmentTag enrichmentTag3 = createEnrichmentTag(3, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[9,10,11,12]}]"); EnrichmentTag enrichmentTag4 = createEnrichmentTag(4, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[10,11,12,13,14]}]"); EnrichmentTag enrichmentTag5 = createEnrichmentTag(5, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[12,13,14,15]}]"); EnrichmentTag enrichmentTag6 = createEnrichmentTag(6, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'A[12]C', judgmentIds:[12]}]"); EnrichmentTag enrichmentTag7 = createEnrichmentTag(7, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'A,12,C', judgmentIds:[11,12,13]}]"); EnrichmentTag enrichmentTag8 = createEnrichmentTag(8, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'A[12,C', judgmentIds:[12,13,14]}]"); EnrichmentTag enrichmentTag9 = createEnrichmentTag(9, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'A,12]C', judgmentIds:[10,11,12]}]"); enrichmentTagRepository.save(Lists.newArrayList(enrichmentTag1, enrichmentTag2, enrichmentTag3, enrichmentTag4, enrichmentTag5, enrichmentTag6, enrichmentTag7, enrichmentTag8, enrichmentTag9)); // execute refCourtCasesJudgmentReferenceRemover.removeReferences(Lists.newArrayList(12L)); // assert assertEnrichmentTagValue(enrichmentTag1.getId(), "[{'caseNumber':'1234/12','judgmentIds':[1234]},{'caseNumber':'AAA','judgmentIds':[]}]"); assertEnrichmentTagValue(enrichmentTag2.getId(), "[{'caseNumber':'1234/12','judgmentIds':[]}]"); assertEnrichmentTagValue(enrichmentTag3.getId(), "[{'caseNumber':'ABC','judgmentIds':[9,10,11]}]"); assertEnrichmentTagValue(enrichmentTag4.getId(), "[{'caseNumber':'ABC','judgmentIds':[10,11,13,14]}]"); assertEnrichmentTagValue(enrichmentTag5.getId(), "[{'caseNumber':'ABC','judgmentIds':[13,14,15]}]"); assertEnrichmentTagValue(enrichmentTag6.getId(), "[{'caseNumber':'A[12]C','judgmentIds':[]}]"); assertEnrichmentTagValue(enrichmentTag7.getId(), "[{'caseNumber':'A,12,C','judgmentIds':[11,13]}]"); assertEnrichmentTagValue(enrichmentTag8.getId(), "[{'caseNumber':'A[12,C','judgmentIds':[13,14]}]"); assertEnrichmentTagValue(enrichmentTag9.getId(), "[{'caseNumber':'A,12]C','judgmentIds':[10,11]}]"); } @Test public void removeReference_MULTIPLE_IDS() { // given EnrichmentTag enrichmentTag1 = createEnrichmentTag(1, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[10,11,12,13,14,15,16]}]"); EnrichmentTag enrichmentTag2 = createEnrichmentTag(2, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[10,11,13,15,16]}]"); EnrichmentTag enrichmentTag3 = createEnrichmentTag(3, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[11,12,13,14,15]}]"); enrichmentTagRepository.save(Lists.newArrayList(enrichmentTag1, enrichmentTag2, enrichmentTag3)); // execute refCourtCasesJudgmentReferenceRemover.removeReferences(Lists.newArrayList(11L, 13L, 15L)); // assert assertEnrichmentTagValue(enrichmentTag1.getId(), "[{'caseNumber':'ABC','judgmentIds':[10,12,14,16]}]"); assertEnrichmentTagValue(enrichmentTag2.getId(), "[{'caseNumber':'ABC','judgmentIds':[10,16]}]"); assertEnrichmentTagValue(enrichmentTag3.getId(), "[{'caseNumber':'ABC','judgmentIds':[12,14]}]"); } @Test public void removeReference_MULTIPLE_CASE_NUMBERS() { // given EnrichmentTag enrichmentTag1 = createEnrichmentTag(1, EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC', judgmentIds:[10,11]}, {caseNumber:'ABC2', judgmentIds:[12]}]"); enrichmentTagRepository.save(enrichmentTag1); // execute refCourtCasesJudgmentReferenceRemover.removeReferences(Lists.newArrayList(10L, 12L)); // assert assertEnrichmentTagValue(enrichmentTag1.getId(), "[{'caseNumber':'ABC','judgmentIds':[11]},{'caseNumber':'ABC2','judgmentIds':[]}]"); } @Test public void removeReference_MARK_JUDGMENT_AS_NOT_INDEXED() { // given Judgment judgment1 = testPersistenceObjectFactory.createSimpleCcJudgment(); Judgment judgment2 = testPersistenceObjectFactory.createSimpleScJudgment(); judgmentRepository.markAsIndexed(judgment1.getId()); judgmentRepository.markAsIndexed(judgment2.getId()); EnrichmentTag enrichmentTag1 = createEnrichmentTag(judgment1.getId(), EnrichmentTagTypes.REFERENCED_COURT_CASES, "[{caseNumber:'ABC',judgmentIds:[" + judgment2.getId() + "]}]"); enrichmentTagRepository.save(enrichmentTag1); // execute refCourtCasesJudgmentReferenceRemover.removeReferences(Lists.newArrayList(judgment2.getId())); // assert List<Long> notIndexed = judgmentRepository.findAllNotIndexedIds(); assertEquals(1, notIndexed.size()); assertEquals(Long.valueOf(judgment1.getId()), notIndexed.get(0)); } //------------------------ PRIVATE -------------------------- private void assertEnrichmentTagValue(long enrichmentTagId, String json) { EnrichmentTag tag = enrichmentTagRepository.findOne(enrichmentTagId); assertEquals(json.replace('\'', '\"'), tag.getValue()); } }