package com.constellio.app.ui.pages.events;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.services.borrowingServices.BorrowingServices;
import com.constellio.app.modules.rm.services.borrowingServices.BorrowingType;
import com.constellio.app.modules.rm.services.events.RMEventsSearchServices;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.app.ui.entities.MetadataValueVO;
import com.constellio.app.ui.framework.builders.MetadataToVOBuilder;
import com.constellio.app.ui.framework.data.RecordVODataProvider;
import com.constellio.app.ui.pages.base.SessionContext;
import com.constellio.data.utils.TimeProvider;
import com.constellio.model.entities.records.wrappers.EventType;
import com.constellio.model.services.search.SearchServices;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.FakeSessionContext;
import com.constellio.sdk.tests.MockedNavigation;
import org.joda.time.LocalDateTime;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
public class EventPresenterAcceptTest extends ConstellioTest {
@Mock EventView view;
MockedNavigation navigator;
RMTestRecords records = new RMTestRecords(zeCollection);
SearchServices searchServices;
EventPresenter presenter;
SessionContext sessionContext;
RMEventsSearchServices rmEventsSearchServices;
RMSchemasRecordsServices rm;
BorrowingServices borrowingServices;
LocalDateTime now = TimeProvider.getLocalDateTime();
MetadataToVOBuilder metadataToVOBuilder = new MetadataToVOBuilder();
@Before
public void setUp()
throws Exception {
prepareSystem(
withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(records)
.withFoldersAndContainersOfEveryStatus().withEvents()
);
inCollection(zeCollection).setCollectionTitleTo("Collection de test");
rmEventsSearchServices = new RMEventsSearchServices(getModelLayerFactory(), zeCollection);
rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory());
sessionContext = FakeSessionContext.adminInCollection(zeCollection);
sessionContext.setCurrentLocale(Locale.FRENCH);
searchServices = getModelLayerFactory().newSearchServices();
borrowingServices = new BorrowingServices(zeCollection, getModelLayerFactory());
when(view.getSessionContext()).thenReturn(sessionContext);
when(view.getCollection()).thenReturn(zeCollection);
when(view.getConstellioFactories()).thenReturn(getConstellioFactories());
when(view.navigate()).thenReturn(navigator);
presenter = spy(new EventPresenter(view));
givenTimeIs(now);
}
@Test
public void givenFolderIdMetadataWhenIsRecordIdMetadataThenReturnTrue()
throws Exception {
MetadataValueVO metadataValueVO = getMetadataValueVO("folder_default_id");
assertThat(presenter.isRecordIdMetadata(metadataValueVO)).isTrue();
}
@Test
public void givenBorrowedFolderByBobWhenGetDataProviderForCurrentlyBorrowedFoldersByUserThenOk()
throws Exception {
borrowingServices
.borrowFolder("C30", now.toLocalDate(), now.plusDays(1).toLocalDate(), records.getAdmin(),
records.getBob_userInAC(),
BorrowingType.BORROW, true);
Map<String, String> params = new HashMap<>();
params.put("id", records.getBob_userInAC().getId());
params.put("startDate", now.toString());
params.put("endDate", now.plusDays(1).toString());
params.put("eventType", EventType.CURRENTLY_BORROWED_FOLDERS);
params.put("eventCategory", EventCategory.EVENTS_BY_USER.name());
when(view.getParameters()).thenReturn(params);
RecordVODataProvider recordVODataProvider = presenter.getDataProvider();
assertThat(recordVODataProvider.size()).isEqualTo(1);
assertThat(recordVODataProvider.getRecordVO(0).getId()).isEqualTo("C30");
assertThat(recordVODataProvider.getRecordVO(0).getTitle()).isEqualTo("Haricot");
}
private MetadataValueVO getMetadataValueVO(String localCode) {
MetadataVO metadataVO = metadataToVOBuilder
.build(rm.defaultFolderSchema().getMetadata(localCode), sessionContext);
return new MetadataValueVO(metadataVO);
}
}