package com.constellio.app.modules.rm.model.calculators.decommissioningList;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.constellio.app.modules.rm.model.CopyRetentionRule;
import com.constellio.app.modules.rm.model.CopyRetentionRuleBuilder;
import com.constellio.model.entities.calculators.CalculatorParameters;
import com.constellio.model.entities.calculators.CalculatorParametersValidatingDependencies;
import com.constellio.sdk.tests.ConstellioTest;
public class DecomListUniformCopyRuleCalculatorTest extends ConstellioTest {
CopyRetentionRule principal, secondPrincipal, thirdPrincipal, secondary;
List<CopyRetentionRule> equalsValues;
List<CopyRetentionRule> differentsValues;
List<CopyRetentionRule> emptyList;
List<CopyRetentionRule> copyRetentionRules;
DecomListUniformCopyRuleCalculator calculator;
@Mock CalculatorParameters parameters;
CopyRetentionRule copyRetentionRule;
CopyRetentionRuleBuilder copyBuilder = CopyRetentionRuleBuilder.UUID();
@Before
public void setUp()
throws Exception {
calculator = spy(new DecomListUniformCopyRuleCalculator());
secondary = copyBuilder.newSecondary(asList("PA", "FI"), "888-0-C");
principal = copyBuilder.newPrincipal(asList("PA"), "888-0-D");
secondPrincipal = copyBuilder.newPrincipal(asList("FI"), "888-0-D");
thirdPrincipal = copyBuilder.newPrincipal(asList("PA", "FI"), "888-0-D");
equalsValues = Arrays.asList(principal, principal, principal, principal);
differentsValues = Arrays.asList(principal, secondPrincipal, thirdPrincipal, secondary);
emptyList = new ArrayList<>();
}
@Test
public void givenDifferentsValuesInListParamsWhenCalculateThenReturnNull()
throws Exception {
copyRetentionRules = differentsValues;
copyRetentionRule = calculatedValue();
assertThat(copyRetentionRule).isNull();
}
@Test
public void givenEqualsValuesInListParamsWhenCalculateThenReturnNull()
throws Exception {
copyRetentionRules = equalsValues;
copyRetentionRule = calculatedValue();
assertThat(copyRetentionRule).isEqualTo(principal);
}
@Test
public void givenEmptyListParamsWhenCalculateThenReturnNull()
throws Exception {
copyRetentionRules = emptyList;
copyRetentionRule = calculatedValue();
assertThat(copyRetentionRule).isNull();
}
// --------------------
private CopyRetentionRule calculatedValue() {
when(parameters.get(calculator.copyRulesParam)).thenReturn(copyRetentionRules);
return calculator.calculate(new CalculatorParametersValidatingDependencies(parameters, calculator));
}
}