package com.constellio.app.ui.pages.management.configs; import static com.constellio.app.ui.i18n.i18n.$; import static org.assertj.core.api.Assertions.assertThat; import java.io.InputStream; import org.junit.Before; import org.junit.Test; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.ui.application.NavigatorConfigurationService; import com.constellio.data.io.streamFactories.StreamFactory; import com.constellio.model.services.configs.SystemConfigurationsManager; import com.constellio.model.services.migrations.ConstellioEIMConfigs; import com.constellio.model.services.records.RecordServices; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.annotations.InDevelopmentTest; import com.constellio.sdk.tests.annotations.UiTest; import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebDriver; @UiTest @InDevelopmentTest public class ConfigsManagementViewAcceptTest extends ConstellioTest { private static int DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX = 5; RecordServices recordServices; ConstellioWebDriver driver; RMTestRecords records = new RMTestRecords(zeCollection); RMSchemasRecordsServices schemas; ConfigManagementFacade configManagementFacade; @Before public void setUp() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(records) ); recordServices = getModelLayerFactory().newRecordServices(); schemas = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory()); driver = newWebDriver(loggedAsUserInCollection("admin", zeCollection)); } @Test public void validateLogo() throws Exception { SystemConfigurationsManager manager = getModelLayerFactory().getSystemConfigurationsManager(); StreamFactory<InputStream> iconFileStream = getTestResourceInputStreamFactory("binary2.png"); manager.setValue(ConstellioEIMConfigs.LOGO_LINK, iconFileStream); navigateToConfigsManagement(); waitUntilICloseTheBrowsers(); } @Test public void validateDefaultGroupsValues() throws Exception { navigateToConfigsManagement(); validateDecommissioningGroupDefaultValues(); validateUserTitleGroupDefaultValues(); } private void validateDecommissioningGroupDefaultValues() { String groupCode = "decommissioning"; assertThat(configManagementFacade.getConfigGroupSize(groupCode)).isEqualTo(9); assertThat(configManagementFacade.getConfigGroupChecboxValue(groupCode, 0)).isEqualTo(true); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 1)).isEqualTo("-1"); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 2)).isEqualTo("1"); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 3)).isEqualTo("1"); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 4)).isEqualTo("1"); assertThat(configManagementFacade.getConfigGroupComboboxValue(groupCode, DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX)) .isEqualTo( $("DecommissioningDateBasedOn.CLOSE_DATE")); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 6)).isEqualTo("12/31"); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 7)).isEqualTo("90"); assertThat(configManagementFacade.getConfigGroupChecboxValue(groupCode, 8)).isEqualTo(false); } private void validateUserTitleGroupDefaultValues() { String groupCode = "userTitlePattern"; assertThat(configManagementFacade.getConfigGroupSize(groupCode)).isEqualTo(1); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 0)).isEqualTo("${firstName} ${lastName}"); } @Test public void whenEnumFieldModifiedThenAdequateValueSet() throws Exception { navigateToConfigsManagement(); String groupCode = "decommissioning"; assertThat(configManagementFacade.getConfigGroupComboboxValue(groupCode, DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX)) .isEqualTo( $("DecommissioningDateBasedOn.CLOSE_DATE")); configManagementFacade.setConfigGroupComboboxValue(groupCode, DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX, 1); configManagementFacade = new ConfigManagementFacade(driver); assertThat(configManagementFacade.getConfigGroupComboboxValue(groupCode, DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX)) .isEqualTo( $("DecommissioningDateBasedOn.OPEN_DATE")); } @Test public void whenIntegerFieldModifiedThenAdequateValueSet() throws Exception { navigateToConfigsManagement(); String groupCode = "decommissioning"; assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 2)).isEqualTo("1"); configManagementFacade.setConfigGroupValue(groupCode, 2, "12"); configManagementFacade = new ConfigManagementFacade(driver); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 2)).isEqualTo("12"); } @Test public void whenStringFieldModifiedThenAdequateValueSet() throws Exception { navigateToConfigsManagement(); String groupCode = "decommissioning"; assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 6)).isEqualTo("12/31"); configManagementFacade.setConfigGroupValue(groupCode, 6, "10/31"); configManagementFacade = new ConfigManagementFacade(driver); assertThat(configManagementFacade.getConfigGroupInputValue(groupCode, 6)).isEqualTo("10/31"); } @Test public void whenBooleanFieldModifiedThenAdequateValueSet() throws Exception { navigateToConfigsManagement(); String groupCode = "decommissioning"; assertThat(configManagementFacade.getConfigGroupChecboxValue(groupCode, 0)).isEqualTo(true); configManagementFacade.toggleConfigGroupCheckBox(groupCode, 0); configManagementFacade = new ConfigManagementFacade(driver); assertThat(configManagementFacade.getConfigGroupChecboxValue(groupCode, 0)).isEqualTo(false); } @Test public void whenSaveButtonClickedAllConfigGroupsSaved() throws Exception { navigateToConfigsManagement(); configManagementFacade.setConfigGroupComboboxValue("decommissioning", DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX, 1); configManagementFacade.setConfigGroupValue("userTitlePattern", 0, "${firstName}"); configManagementFacade.save(); navigateToAudit(); configManagementFacade = null; navigateToConfigsManagement(); assertThat( configManagementFacade.getConfigGroupComboboxValue("decommissioning", DECOMMISSIONING_DATE_BASED_ON_CONFIG_INDEX)) .isEqualTo( $("DecommissioningDateBasedOn.OPEN_DATE")); assertThat(configManagementFacade.getConfigGroupInputValue("userTitlePattern", 0)).isEqualTo("${firstName}"); } private void navigateToConfigsManagement() { driver.navigateTo().url(NavigatorConfigurationService.CONFIG_MANAGEMENT); if (configManagementFacade == null) { configManagementFacade = new ConfigManagementFacade(driver); } } private void navigateToAudit() { driver.navigateTo().url(NavigatorConfigurationService.EVENTS_LIST); } }