package com.constellio.app.modules.rm.ui.pages.containers; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import java.util.Locale; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.framework.data.RecordVODataProvider; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.records.RecordServices; import com.constellio.sdk.tests.ConstellioTest; public class ContainersByAdminUnitPresenterAcceptTest extends ConstellioTest { RecordServices recordServices; RMTestRecords records = new RMTestRecords(zeCollection); @Mock ContainersByAdministrativeUnitsView view; @Mock SessionContext sessionContext; ContainersByAdministrativeUnitsPresenter presenter; RMSchemasRecordsServices rmSchemasRecordsServices; @Before public void setUp() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(records) .withFoldersAndContainersOfEveryStatus().withEvents() ); getDataLayerFactory().getDataLayerLogger().monitor("idx_rfc_00000000001"); inCollection(zeCollection).setCollectionTitleTo("Collection de test"); recordServices = getModelLayerFactory().newRecordServices(); rmSchemasRecordsServices = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory()); when(view.getConstellioFactories()).thenReturn(getConstellioFactories()); when(view.getCollection()).thenReturn(zeCollection); when(view.getSessionContext()).thenReturn(sessionContext); when(sessionContext.getCurrentLocale()).thenReturn(Locale.FRENCH); when(sessionContext.getCurrentCollection()).thenReturn(zeCollection); presenter = new ContainersByAdministrativeUnitsPresenter(view); } @Test public void givenTabDepositNoStorageWhenGettingDataProviderThenAllRootUnitsReturned() throws Exception { presenter.forParams(ContainersByAdministrativeUnitsPresenter.TAB_DEPOSIT_NO_STORAGE_SPACE); RecordVODataProvider dataProvider = presenter.getDataProvider(); assertThat(dataProvider.getSchema().getCode()).isEqualTo(AdministrativeUnit.DEFAULT_SCHEMA); assertThat(getRecordIdsFromDataProvider(dataProvider)) .containsOnly(records.unitId_10, records.unitId_20, records.unitId_30); } @Test public void givenTabDepositWithStorageWhenGettingDataProviderThenAllRootUnitsReturned() throws Exception { presenter.forParams(ContainersByAdministrativeUnitsPresenter.TAB_DEPOSIT_WITH_STORAGE_SPACE); RecordVODataProvider dataProvider = presenter.getDataProvider(); assertThat(dataProvider.getSchema().getCode()).isEqualTo(AdministrativeUnit.DEFAULT_SCHEMA); assertThat(getRecordIdsFromDataProvider(dataProvider)) .containsOnly(records.unitId_10, records.unitId_20, records.unitId_30); } @Test public void givenTabTransferNoStorageWhenGettingDataProviderThenAllRootUnitsReturned() throws Exception { presenter.forParams(ContainersByAdministrativeUnitsPresenter.TAB_TRANSFER_NO_STORAGE_SPACE); RecordVODataProvider dataProvider = presenter.getDataProvider(); assertThat(dataProvider.getSchema().getCode()).isEqualTo(AdministrativeUnit.DEFAULT_SCHEMA); assertThat(getRecordIdsFromDataProvider(dataProvider)) .containsOnly(records.unitId_10, records.unitId_20, records.unitId_30); } @Test public void givenTabTransferWithStorageWhenGettingDataProviderThenAllRootUnitsReturned() throws Exception { presenter.forParams(ContainersByAdministrativeUnitsPresenter.TAB_TRANSFER_WITH_STORAGE_SPACE); RecordVODataProvider dataProvider = presenter.getDataProvider(); assertThat(dataProvider.getSchema().getCode()).isEqualTo(AdministrativeUnit.DEFAULT_SCHEMA); assertThat(getRecordIdsFromDataProvider(dataProvider)) .containsOnly(records.unitId_10, records.unitId_20, records.unitId_30); } @Test public void givenDeletedAdministrativeUnitWhenGettingDataProviderThenNoDeletedAdministrativeUnitReturned() throws Exception { AdministrativeUnit administrativeUnit = rmSchemasRecordsServices.newAdministrativeUnitWithId("deletedAdministrativeUnit") .setCode("deletedAdministrativeUnit").setTitle("deletedAdministrativeUnit"); recordServices.add(administrativeUnit); recordServices.logicallyDelete(administrativeUnit.getWrappedRecord(), User.GOD); assertThat(administrativeUnit.getWrappedRecord().get(Schemas.LOGICALLY_DELETED_STATUS)).isEqualTo(true); presenter.forParams(ContainersByAdministrativeUnitsPresenter.TAB_DEPOSIT_NO_STORAGE_SPACE); RecordVODataProvider dataProvider = presenter.getDataProvider(); assertThat(dataProvider.getSchema().getCode()).isEqualTo(AdministrativeUnit.DEFAULT_SCHEMA); assertThat(getRecordIdsFromDataProvider(dataProvider)) .containsOnly(records.unitId_10, records.unitId_20, records.unitId_30); } private List<String> getRecordIdsFromDataProvider(RecordVODataProvider dataProvider) { List<String> IDs = new ArrayList<>(); for (RecordVO recordVO : dataProvider.listRecordVOs(0, dataProvider.size())) { IDs.add(recordVO.getId()); } return IDs; } }