package com.constellio.app.ui.pages.management.schemas.schema; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsEnabled; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsMultivalue; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsSearchable; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsSortable; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import com.constellio.sdk.tests.MockedNavigation; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.app.ui.application.CoreViews; import com.constellio.app.ui.entities.MetadataVO; import com.constellio.app.ui.framework.builders.MetadataToVOBuilder; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.FakeSessionContext; import com.constellio.sdk.tests.schemas.TestsSchemasSetup; import com.constellio.sdk.tests.schemas.TestsSchemasSetup.ZeCustomSchemaMetadatas; import com.constellio.sdk.tests.schemas.TestsSchemasSetup.ZeSchemaMetadatas; public class AddEditSchemaMetadataPresenterAcceptTest extends ConstellioTest { TestsSchemasSetup setup = new TestsSchemasSetup(zeCollection); ZeSchemaMetadatas zeSchema = setup.new ZeSchemaMetadatas(); ZeCustomSchemaMetadatas zeCustomSchema = setup.new ZeCustomSchemaMetadatas(); AddEditSchemaMetadataPresenter presenter; MetadataSchemasManager metadataSchemasManager; Map<String, String> parameters; @Mock AddEditSchemaMetadataView view; MockedNavigation navigator; SessionContext sessionContext; @Before public void setUp() throws Exception { prepareSystem( withZeCollection() ); navigator = new MockedNavigation(); sessionContext = FakeSessionContext.adminInCollection(zeCollection); defineSchemasManager() .using(setup.andCustomSchema().withAStringMetadataInCustomSchema(whichIsMultivalue, whichIsSearchable) .withAStringMetadata(whichIsSortable, whichIsEnabled).withABooleanMetadata(whichIsEnabled) .withADateMetadata(whichIsEnabled)); metadataSchemasManager = getModelLayerFactory().getMetadataSchemasManager(); when(view.getSessionContext()).thenReturn(sessionContext); when(view.getCollection()).thenReturn(zeCollection); when(view.getConstellioFactories()).thenReturn(getConstellioFactories()); when(view.navigate()).thenReturn(navigator); presenter = new AddEditSchemaMetadataPresenter(view); parameters = new HashMap<>(); parameters.put("schemaTypeCode", setup.anotherSchemaTypeCode()); parameters.put("schemaCode", setup.anotherDefaultSchemaCode()); presenter.setParameters(parameters); } @Test public void whenAddButtonClickedThenNavigateToAddEditMetadataWithCorrectParams() throws Exception { presenter.setSchemaCode(setup.anotherDefaultSchemaCode()); presenter.addButtonClicked(); String params = "metadataCode=;schemaCode=anotherSchemaType_default;schemaTypeCode=anotherSchemaType"; verify(view.navigate().to()).addMetadata("editMetadata/" + URLEncoder.encode(params)); } @Test public void whenEditButtonClickedThenNavigateToAddEditMetadataWithCorrectParams() throws Exception { presenter.setSchemaCode(setup.anotherDefaultSchemaCode()); MetadataVO metadataVO = new MetadataToVOBuilder() .build(setup.anotherDefaultSchema().getMetadata("anotherSchemaType_default_title"), null, sessionContext); presenter.editButtonClicked(metadataVO); String params = "metadataCode=anotherSchemaType_default_title;schemaCode=anotherSchemaType_default;schemaTypeCode=anotherSchemaType"; verify(view.navigate().to()).editMetadata("editMetadata/" + URLEncoder.encode(params)); } @Test public void whenBackButtonClickedThenNavigateToAddEditMetadataWithCorrectParams() throws Exception { presenter.setSchemaCode(setup.anotherDefaultSchemaCode()); presenter.backButtonClicked(); String params = "schemaCode=anotherSchemaType_default;schemaTypeCode=anotherSchemaType"; verify(view.navigate().to()).listSchema("editSchema/" + URLEncoder.encode(params)); } }