package pl.edu.icm.saos.importer.notapi.constitutionaltribunal.judgment.process;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import java.util.List;
import org.junit.Test;
import pl.edu.icm.saos.importer.common.correction.ImportCorrectionList;
import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgment;
import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgmentDissentingOpinion;
import com.google.common.collect.Lists;
/**
* @author madryk
*/
public class CtSpecificJudgmentOverwriterTest {
private CtSpecificJudgmentOverwriter ctSpecificJudgmentOverwriter = new CtSpecificJudgmentOverwriter();
private ConstitutionalTribunalJudgment oldJudgment = new ConstitutionalTribunalJudgment();
private ConstitutionalTribunalJudgment newJudgment = new ConstitutionalTribunalJudgment();
private ImportCorrectionList correctionList = new ImportCorrectionList();
//------------------------ TESTS --------------------------
@Test
public void overrideJudgment_DISSENTING_OPINIONS() {
// given
ConstitutionalTribunalJudgmentDissentingOpinion oldOpinion1 =
createDissentingOpinion(Lists.newArrayList("Jan Kowalski", "Adam Nowak"), "abc");
ConstitutionalTribunalJudgmentDissentingOpinion oldOpinion2 =
createDissentingOpinion(Lists.newArrayList("Jacek Zielinski"), "def");
ConstitutionalTribunalJudgmentDissentingOpinion oldOpinion3 =
createDissentingOpinion(Lists.newArrayList("Katarzyna Kamińska"), "ghi");
ConstitutionalTribunalJudgmentDissentingOpinion oldOpinion4 =
createDissentingOpinion(Lists.newArrayList("Stanisław Kowalski"), "jkl");
oldJudgment.addDissentingOpinion(oldOpinion1);
oldJudgment.addDissentingOpinion(oldOpinion2);
oldJudgment.addDissentingOpinion(oldOpinion3);
oldJudgment.addDissentingOpinion(oldOpinion4);
ConstitutionalTribunalJudgmentDissentingOpinion newOpinion1 =
createDissentingOpinion(Lists.newArrayList("Jan Kowalski"), "abc");
ConstitutionalTribunalJudgmentDissentingOpinion newOpinion2 =
createDissentingOpinion(Lists.newArrayList("Jacek Zieliński"), "def");
ConstitutionalTribunalJudgmentDissentingOpinion newOpinion3 =
createDissentingOpinion(Lists.newArrayList("Katarzyna Kamińska"), "ghi");
newJudgment.addDissentingOpinion(newOpinion1);
newJudgment.addDissentingOpinion(newOpinion2);
newJudgment.addDissentingOpinion(newOpinion3);
// execute
ctSpecificJudgmentOverwriter.overwriteJudgment(oldJudgment, newJudgment, correctionList);
// assert
assertThat(newJudgment.getDissentingOpinions(), containsInAnyOrder(newOpinion1, newOpinion2, newOpinion3));
assertThat(oldJudgment.getDissentingOpinions(), containsInAnyOrder(newOpinion1, newOpinion2, oldOpinion3));
}
//------------------------ PRIVATE --------------------------
private ConstitutionalTribunalJudgmentDissentingOpinion createDissentingOpinion(List<String> authors, String textContent) {
ConstitutionalTribunalJudgmentDissentingOpinion opinion = new ConstitutionalTribunalJudgmentDissentingOpinion();
authors.forEach(author -> opinion.addAuthor(author));
opinion.setTextContent(textContent);
return opinion;
}
}