package com.constellio.model.services.schemas.calculators; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.MockitoAnnotations.Mock; import com.constellio.model.entities.calculators.CalculatorParameters; import com.constellio.model.entities.calculators.dependencies.LocalDependency; import com.constellio.model.entities.calculators.dependencies.ReferenceDependency; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.sdk.tests.ConstellioTest; public class RoleCalculationTest extends ConstellioTest { @Mock CalculatorParameters parameters; RolesCalculator calculator; String roleUser1 = "zeRoleCode"; String roleUser2 = "zeRoleCode1"; String roleGroup1 = "zeRoleCode2"; String roleGroup2 = "zeRoleCode3"; LocalDependency<List<String>> userRolesParam; ReferenceDependency<List<String>> groupsParam; @Before public void setUp() throws Exception { calculator = new RolesCalculator(); userRolesParam = LocalDependency.toARequiredStringList("userroles"); groupsParam = ReferenceDependency.toAString("groups", "roles").whichIsRequired().whichIsMultivalue(); } @Test public void givenRoleAndGroupRoleWhenCalculatingValueThenRightValueReturned() throws Exception { when(parameters.get(userRolesParam)).thenReturn(Arrays.asList(roleUser1, roleUser2)); when(parameters.get(groupsParam)).thenReturn(Arrays.asList(roleGroup1, roleGroup2)); List<String> calculatedValue = calculator.calculate(parameters); assertThat(calculatedValue).containsOnly(roleGroup1, roleGroup2, roleUser1, roleUser2); } @Test public void givenNoRoleWhenCalculatingValueThenEmptyListReturned() throws Exception { List<String> calculatedValue = calculator.calculate(parameters); assertThat(calculatedValue).isEmpty(); } @Test public void whenGettingReturnTypeThenText() throws Exception { assertThat(calculator.getReturnType()).isEqualTo(MetadataValueType.STRING); } @Test public void whenGettingDependenciesThenRightValueReturned() throws Exception { assertThat((List) calculator.getDependencies()).containsOnly(userRolesParam, groupsParam); } @Test public void whenCheckingIfMultivalueThenTrue() throws Exception { assertThat(calculator.isMultiValue()).isTrue(); } }