package com.constellio.app.modules.rm.ui.accept.decommissioning;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.services.decommissioning.SearchType;
import com.constellio.app.modules.rm.ui.pages.decommissioning.DecommissioningBuilderViewImpl.DecommissioningButton;
import com.constellio.app.ui.tools.ButtonWebElement;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.annotations.UiTest;
import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebDriver;
@UiTest
public class DecommissioningBuilderViewAcceptTest extends ConstellioTest {
RMTestRecords records = new RMTestRecords(zeCollection);
ConstellioWebDriver driver;
DecommissioningBuilderPage page;
@Before
public void setUp()
throws Exception {
prepareSystem(
withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(records)
.withFoldersAndContainersOfEveryStatus()
);
driver = newWebDriver(loggedAsUserInCollection(gandalf, zeCollection));
}
@Test
public void givenAdministratorTWhenAdministrativeUnitSelectedThenSearchButtonEnabled() {
givenTransfer();
assertThat(page.getSearchButton().isEnabled()).isFalse();
page.getAdministrativeUnit().typeAndSelectFirst("10A");
assertThat(page.getSearchButton().isEnabled()).isTrue();
}
@Test
public void givenAdministratorThenCanCreateListToCloseWithFixedPeriod() {
givenCloseWithFixedPeriod();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListToCloseWithCode888() {
givenCloseWithCode888();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListToCloseWithCode999() {
givenCloseWithCode999();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListToTransfer() {
givenTransfer();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListOfActiveToDeposit() {
givenActiveToDeposit();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListOfActiveToDestroy() {
givenActiveToDestroy();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListOfSemiActiveToDeposit() {
givenSemiActiveToDeposit();
createNewList();
}
@Test
public void givenAdministratorThenCanCreateListOfSemiActiveToDestroy() {
givenSemiActiveToDestroy();
createNewList();
}
private void givenCloseWithFixedPeriod() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.fixedPeriod);
}
private void givenCloseWithCode888() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.code888);
}
private void givenCloseWithCode999() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.code999);
}
private void givenTransfer() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.transfer);
}
private void givenActiveToDeposit() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.activeToDeposit);
}
private void givenActiveToDestroy() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.activeToDestroy);
}
private void givenSemiActiveToDeposit() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.semiActiveToDeposit);
}
private void givenSemiActiveToDestroy() {
page = new DecommissioningBuilderPage(driver).navigateToPage(SearchType.semiActiveToDestroy);
}
private void createNewList() {
page.getAdministrativeUnit().typeAndSelectFirst("10A");
ButtonWebElement create = page.searchAndWaitForResults().getCreateButton();
assertThat(create.isEnabled()).isFalse();
page.getAllResultCheckBoxes().get(0).toggle();
assertThat(create.isEnabled()).isTrue();
page.openCreateForm()
.setValue(DecommissioningButton.TITLE, "New list")
.setValue(DecommissioningButton.DESCRIPTION, "A description")
.clickSaveButtonAndWaitForPageReload();
}
}