package com.constellio.app.ui.pages.management.extractors; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.List; import java.util.Locale; import com.constellio.sdk.tests.MockedNavigation; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.ui.application.CoreViews; import com.constellio.app.ui.entities.MetadataExtractorVO; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.FakeSessionContext; public class ListMetadataExtractorsPresenterAcceptTest extends ConstellioTest { @Mock ListMetadataExtractorsView view; MockedNavigation navigator; ListMetadataExtractorsPresenter presenter; SessionContext sessionContext; RMTestRecords rmTestRecords = new RMTestRecords(zeCollection); MetadataSchemaTypes types; @Before public void setUp() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule().withRMTest(rmTestRecords).withAllTestUsers() ); navigator = new MockedNavigation(); types = getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(zeCollection); sessionContext = FakeSessionContext.adminInCollection(zeCollection); sessionContext.setCurrentLocale(Locale.FRENCH); when(view.getSessionContext()).thenReturn(sessionContext); when(view.getCollection()).thenReturn(zeCollection); when(view.getConstellioFactories()).thenReturn(getConstellioFactories()); when(view.navigate()).thenReturn(navigator); presenter = new ListMetadataExtractorsPresenter(view); } @Test public void whenGetMetadataExtractorVOsThenOk() throws Exception { List<MetadataExtractorVO> metadataExtractorVOs = presenter.getMetadataExtractorVOs(sessionContext, types); assertThat(metadataExtractorVOs).extracting("metadataVO.code", "properties", "metadataVO.schema.code") .contains( tuple("document_default_author", Arrays.asList("author"), "document_default"), tuple("document_default_company", Arrays.asList("company"), "document_default"), tuple("document_default_keywords", Arrays.asList("keywords"), "document_default"), tuple("document_default_subject", Arrays.asList("subject"), "document_default"), tuple("document_default_title", Arrays.asList("title"), "document_default") ); } @Test public void givenMetadataExtractorVOWhenEditButtonClickedThenOk() throws Exception { MetadataExtractorVO metadataExtractorVO = presenter.getMetadataExtractorVOs(sessionContext, types).get(0); presenter.editButtonClicked(metadataExtractorVO); verify(view.navigate().to()).editMetadataExtractor(metadataExtractorVO.getMetadataVO().getCode()); } @Test public void whenAddButtonClickedThenOk() throws Exception { presenter.addButtonClicked(); verify(view.navigate().to()).addMetadataExtractor(); } @Test public void whenBackButtonClickedThenOk() throws Exception { presenter.backButtonClicked(); verify(view.navigate().to()).adminModule(); } @Test public void givenMetadataExtractorVOWhenDeleteButtonClickedThenOk() throws Exception { List<MetadataExtractorVO> metadataExtractorVOs = presenter.getMetadataExtractorVOs(sessionContext, types); MetadataExtractorVO metadataExtractorVO = metadataExtractorVOs.get(0); assertThat(metadataExtractorVOs).extracting("metadataVO.code").contains( metadataExtractorVO.getMetadataVO().getCode() ); presenter.deleteButtonClicked(metadataExtractorVO); assertThat(presenter.getMetadataExtractorVOs(sessionContext, types)) .extracting("metadataVO.code").doesNotContain( metadataExtractorVO.getMetadataVO().getCode() ); } @Test public void givenUserWithPageAccessWhenHasPageAccessThenReturnFalse() throws Exception { assertThat(presenter.hasPageAccess("", rmTestRecords.getAdmin())).isTrue(); } @Test public void givenUserWithoutPageAccessWhenHasPageAccessThenReturnFalse() throws Exception { assertThat(presenter.hasPageAccess("", rmTestRecords.getBob_userInAC())).isFalse(); } }