package pl.edu.icm.saos.enrichment.hash; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static pl.edu.icm.saos.persistence.common.TestInMemoryEnrichmentTagFactory.createEnrichmentTag; import static pl.edu.icm.saos.persistence.common.TestInMemoryEnrichmentTagFactory.createReferencedCourtCasesTag; import java.util.List; import org.junit.Before; 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.TestObjectContext; 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 com.google.common.collect.Lists; /** * @author madryk */ @Category(SlowTest.class) public class JudgmentEnrichmentTagsFetcherTest extends EnrichmentTestSupport { @Autowired private JudgmentEnrichmentTagsFetcher judgmentEnrichmentTagsFetcher; @Autowired private EnrichmentTagRepository enrichmentTagRepository; @Autowired private TestPersistenceObjectFactory testPersistenceObjectFactory; private TestObjectContext testObjectContext; private EnrichmentTag ccjRefCourtCasesTag; private EnrichmentTag scjRefCourtCasesTag; private EnrichmentTag ctjTag; @Before public void setUp() { testObjectContext = testPersistenceObjectFactory.createTestObjectContext(); ccjRefCourtCasesTag = createReferencedCourtCasesTag(testObjectContext.getCcJudgmentId(), testObjectContext.getCtJudgment()); scjRefCourtCasesTag = createReferencedCourtCasesTag(testObjectContext.getScJudgmentId(), testObjectContext.getCtJudgment(), testObjectContext.getNacJudgment()); ctjTag = createEnrichmentTag(testObjectContext.getCtJudgmentId(), "SOME_TAG_TYPE", "{key:'value'}"); enrichmentTagRepository.save(Lists.newArrayList(ccjRefCourtCasesTag, scjRefCourtCasesTag, ctjTag)); } //------------------------ TESTS -------------------------- @Test public void fetchEnrichmentTagsForJudgments() { // given long notExistingJudgmentId = testObjectContext.getCcJudgmentId() + testObjectContext.getScJudgmentId() + testObjectContext.getCtJudgmentId() + testObjectContext.getNacJudgmentId(); // execute List<JudgmentEnrichmentTags> judgmentsEnrichmentTags = judgmentEnrichmentTagsFetcher.fetchEnrichmentTagsForJudgments( Lists.newArrayList(testObjectContext.getCtJudgmentId(), testObjectContext.getNacJudgmentId(), notExistingJudgmentId)); // assert assertEquals(3, judgmentsEnrichmentTags.size()); JudgmentEnrichmentTags ctjEnrichmentTags = getJudgmentEnrichmentTags(judgmentsEnrichmentTags, testObjectContext.getCtJudgmentId()); assertNotNull(ctjEnrichmentTags); assertThat(ctjEnrichmentTags.getEnrichmentTags(), containsInAnyOrder(ccjRefCourtCasesTag, scjRefCourtCasesTag, ctjTag)); JudgmentEnrichmentTags nacjEnrichmentTags = getJudgmentEnrichmentTags(judgmentsEnrichmentTags, testObjectContext.getNacJudgmentId()); assertNotNull(nacjEnrichmentTags); assertThat(nacjEnrichmentTags.getEnrichmentTags(), containsInAnyOrder(scjRefCourtCasesTag)); JudgmentEnrichmentTags notExistingJudgmentEnrichmentTags = getJudgmentEnrichmentTags(judgmentsEnrichmentTags, notExistingJudgmentId); assertNotNull(notExistingJudgmentEnrichmentTags); assertEquals(0, notExistingJudgmentEnrichmentTags.getEnrichmentTags().size()); } //------------------------ PRIVATE -------------------------- private JudgmentEnrichmentTags getJudgmentEnrichmentTags(List<JudgmentEnrichmentTags> judgmentsEnrichmentTags, long judgmentId) { return judgmentsEnrichmentTags.stream() .filter(judgmentTags -> judgmentTags.getJudgmentId() == judgmentId) .findFirst().orElse(null); } }