package pl.edu.icm.saos.enrichment.delete;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static pl.edu.icm.saos.common.json.JsonNormalizer.normalizeJson;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.springframework.beans.factory.annotation.Autowired;
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.model.Judgment;
import pl.edu.icm.saos.persistence.repository.JudgmentRepository;
import com.google.common.collect.Lists;
/**
* @author madryk
*/
@Category(SlowTest.class)
public class JudgmentWithEnrichmentDeleterTest extends EnrichmentTestSupport {
@Autowired
private JudgmentWithEnrichmentDeleter judgmentWithEnrichmentDeleter;
@Autowired
private JudgmentRepository judgmentRepository;
@Autowired
private EnrichmentTagRepository enrichmentTagRepository;
@Autowired
private TestPersistenceObjectFactory testPersistenceObjectFactory;
//------------------------ TESTS --------------------------
@Test
public void delete_ID_LIST() {
// given
Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment();
Judgment scJudgment = testPersistenceObjectFactory.createScJudgment();
Judgment ctJudgment = testPersistenceObjectFactory.createCtJudgment();
Judgment nacJudgment = testPersistenceObjectFactory.createNacJudgment();
testPersistenceObjectFactory.createEnrichmentTagsForJudgment(ccJudgment.getId());
EnrichmentTag referenceTag1 = testPersistenceObjectFactory.createReferencedCourtCasesTag(nacJudgment.getId(), ccJudgment);
EnrichmentTag referenceTag2 = testPersistenceObjectFactory.createReferencedCourtCasesTag(ctJudgment.getId(), ccJudgment);
// execute
judgmentWithEnrichmentDeleter.delete(Lists.newArrayList(ccJudgment.getId(), scJudgment.getId()));
// assert
assertFalse(judgmentRepository.exists(ccJudgment.getId()));
assertFalse(judgmentRepository.exists(scJudgment.getId()));
assertEquals(0, enrichmentTagRepository.findAllByJudgmentId(ccJudgment.getId()).size());
assertEnrichmentTagValue(referenceTag1.getId(), normalizeJson("[{'caseNumber':'"+ccJudgment.getCaseNumbers().get(0)+"','judgmentIds':[]}]"));
assertEnrichmentTagValue(referenceTag2.getId(), normalizeJson("[{'caseNumber':'"+ccJudgment.getCaseNumbers().get(0)+"','judgmentIds':[]}]"));
}
@Test
public void delete_SINGLE() {
// given
Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment();
Judgment scJudgment = testPersistenceObjectFactory.createScJudgment();
testPersistenceObjectFactory.createEnrichmentTagsForJudgment(ccJudgment.getId());
EnrichmentTag referenceTag = testPersistenceObjectFactory.createReferencedCourtCasesTag(scJudgment.getId(), ccJudgment);
// execute
judgmentWithEnrichmentDeleter.delete(ccJudgment);
// assert
assertFalse(judgmentRepository.exists(ccJudgment.getId()));
assertEquals(0, enrichmentTagRepository.findAllByJudgmentId(ccJudgment.getId()).size());
assertEnrichmentTagValue(referenceTag.getId(), normalizeJson("[{'caseNumber':'"+ccJudgment.getCaseNumbers().get(0)+"','judgmentIds':[]}]"));
}
@Test
public void delete_SINGLE_BY_ID() {
// given
Judgment ccJudgment = testPersistenceObjectFactory.createCcJudgment();
Judgment scJudgment = testPersistenceObjectFactory.createScJudgment();
testPersistenceObjectFactory.createEnrichmentTagsForJudgment(ccJudgment.getId());
EnrichmentTag referenceTag = testPersistenceObjectFactory.createReferencedCourtCasesTag(scJudgment.getId(), ccJudgment);
// execute
judgmentWithEnrichmentDeleter.delete(ccJudgment.getId());
// assert
assertFalse(judgmentRepository.exists(ccJudgment.getId()));
assertEquals(0, enrichmentTagRepository.findAllByJudgmentId(ccJudgment.getId()).size());
assertEnrichmentTagValue(referenceTag.getId(), normalizeJson("[{'caseNumber':'"+ccJudgment.getCaseNumbers().get(0)+"','judgmentIds':[]}]"));
}
//------------------------ PRIVATE --------------------------
private void assertEnrichmentTagValue(long enrichmentTagId, String json) {
EnrichmentTag tag = enrichmentTagRepository.findOne(enrichmentTagId);
assertEquals(normalizeJson(json), tag.getValue());
}
}