package pl.edu.icm.saos.search.indexing; import static pl.edu.icm.saos.search.indexing.SolrDocumentAssert.assertFieldValues; import java.util.List; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.SolrInputField; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.reflect.Whitebox; import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgment; import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgmentDissentingOpinion; import pl.edu.icm.saos.search.config.model.JudgmentIndexField; import com.google.common.collect.Lists; import com.tngtech.java.junit.dataprovider.DataProvider; import com.tngtech.java.junit.dataprovider.DataProviderRunner; import com.tngtech.java.junit.dataprovider.UseDataProvider; /** * @author madryk */ @RunWith(DataProviderRunner.class) public class CtJudgmentIndexFieldsFillerTest { private CtJudgmentIndexFieldsFiller ccJudgmentIndexingFiller = new CtJudgmentIndexFieldsFiller(); private SolrFieldAdder<JudgmentIndexField> fieldAdder = new SolrFieldAdder<JudgmentIndexField>(); @DataProvider public static Object[][] ctJudgmentsFieldsData() { SolrInputFieldFactory fieldFactory = new SolrInputFieldFactory(); long idValue = 1; // basic ConstitutionalTribunalJudgment basicJudgment = new ConstitutionalTribunalJudgment(); Whitebox.setInternalState(basicJudgment, "id", idValue); List<SolrInputField> basicFields = Lists.newArrayList( fieldFactory.create("databaseId", idValue), fieldFactory.create("courtType", "CONSTITUTIONAL_TRIBUNAL")); // dissenting opinions ConstitutionalTribunalJudgment dissentingOpinionsJudgment = new ConstitutionalTribunalJudgment(); ConstitutionalTribunalJudgmentDissentingOpinion firstDissentingOpinion = new ConstitutionalTribunalJudgmentDissentingOpinion(); firstDissentingOpinion.setTextContent("firstOpinionText"); firstDissentingOpinion.addAuthor("Adam Nowak"); firstDissentingOpinion.addAuthor("Jan Kowalski"); dissentingOpinionsJudgment.addDissentingOpinion(firstDissentingOpinion); ConstitutionalTribunalJudgmentDissentingOpinion secondDissentingOpinion = new ConstitutionalTribunalJudgmentDissentingOpinion(); secondDissentingOpinion.setTextContent("secondOpinionText"); secondDissentingOpinion.addAuthor("Sławomir Zieliński"); dissentingOpinionsJudgment.addDissentingOpinion(secondDissentingOpinion); List<SolrInputField> dissentingOpinionsFields = Lists.newArrayList( fieldFactory.create("ctDissentingOpinion", "firstOpinionText", "secondOpinionText", "Adam Nowak", "Jan Kowalski", "Sławomir Zieliński"), fieldFactory.create("ctDissentingOpinionAuthor", "Adam Nowak", "Jan Kowalski", "Sławomir Zieliński")); return new Object[][] { { basicJudgment, basicFields }, { dissentingOpinionsJudgment, dissentingOpinionsFields }, }; } @Before public void setUp() { ccJudgmentIndexingFiller.setFieldAdder(fieldAdder); } //------------------------ TESTS -------------------------- @Test @UseDataProvider("ctJudgmentsFieldsData") public void fillFields(ConstitutionalTribunalJudgment givenJudgment, List<SolrInputField> expectedFields) { // given SolrInputDocument doc = new SolrInputDocument(); JudgmentIndexingData indexingData = new JudgmentIndexingData(); indexingData.setJudgment(givenJudgment); // execute ccJudgmentIndexingFiller.fillFields(doc, indexingData); // assert expectedFields.forEach(expectedField -> assertFieldValues(doc, expectedField)); } }