package com.constellio.app.modules.rm.ui.pages.decommissioning; import com.constellio.app.entities.schemasDisplay.SchemaTypesDisplayConfig; import com.constellio.app.modules.rm.services.decommissioning.SearchType; import com.constellio.app.services.schemasDisplay.SchemasDisplayManager; import com.constellio.model.entities.enums.SearchSortType; import com.constellio.model.services.migrations.ConstellioEIMConfigs; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.FakeSessionContext; import com.constellio.sdk.tests.MockedFactories; import com.constellio.sdk.tests.MockedNavigation; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import java.util.ArrayList; import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.*; public class DecommissioningBuilderPresenterTest extends ConstellioTest { public static final String FACET_CODE = "schemaType_default_zeField"; @Mock DecommissioningBuilderView view; MockedNavigation navigator; @Mock SchemasDisplayManager schemasDisplayManager; @Mock SchemaTypesDisplayConfig typesDisplayConfig; MockedFactories factories = new MockedFactories(); @Mock DecommissioningBuilderPresenter presenter; @Mock private ConstellioEIMConfigs mockedConfigs; @Before public void setUp() { when(view.getConstellioFactories()).thenReturn(factories.getConstellioFactories()); when(view.getSessionContext()).thenReturn(FakeSessionContext.gandalfInCollection(zeCollection)); when(view.navigate()).thenReturn(navigator); when(view.getCollection()).thenReturn(zeCollection); when(factories.getAppLayerFactory().getMetadataSchemasDisplayManager()).thenReturn(schemasDisplayManager); when(schemasDisplayManager.getTypes(zeCollection)).thenReturn(typesDisplayConfig); when(typesDisplayConfig.getFacetMetadataCodes()).thenReturn(Arrays.asList(FACET_CODE)); when(factories.getModelLayerFactory().getSystemConfigs()).thenReturn(mockedConfigs); when(mockedConfigs.getSearchSortType()).thenReturn(SearchSortType.RELEVENCE); presenter = spy(new DecommissioningBuilderPresenter(view)); doReturn(new ArrayList<>()).when(presenter).getFoldersAlreadyInNonProcessedDecommissioningLists(); doReturn(new ArrayList<>()).when(presenter).getDocumentsAlreadyInNonProcessedDecommissioningLists(); } @Test public void givenParametersThenItStoresTheSearchType() { presenter.forRequestParameters("transfer"); assertThat(presenter.searchType).isEqualTo(SearchType.transfer); } @Test public void givenParametersThenItAddsTwoEmptySearchCriteria() { presenter.forRequestParameters("transfer"); verify(view, times(2)).addEmptyCriterion(); } @Test public void givenParametersThenItSetsTheCriterionSchemaType() { presenter.forRequestParameters("transfer"); verify(view, times(1)).setCriteriaSchemaType("folder"); } @Test public void givenAddCriterionRequestedTheItTellsTheViewToAddAnEmptyCriterion() { presenter.addCriterionRequested(); verify(view, times(1)).addEmptyCriterion(); } }