Bug 5239: Extended POs to allow editing RoleDefinitions

This commit is contained in:
Steffen Schaefer committed 2020-08-14 15:53:22 +02:00
1 parent 67a72a2045
commit a8561d215c
4 files changed
+47 -15

No files matched your search

@@ -9,14 +9,14 @@ import com.sap.sailing.selenium.pages.common.DataEntryDialogPO;
import com.sap.sailing.selenium.pages.gwt.StringListEditorCompositePO;
import com.sap.sailing.selenium.pages.gwt.TextBoxPO;
public class RoleDefinitionCreationDialogPO extends DataEntryDialogPO {
public class RoleDefinitionCreationAndUpdateDialogPO extends DataEntryDialogPO {
@FindBy(how = BySeleniumId.class, using = "name")
private WebElement roleNameInput;
@FindBy(how = BySeleniumId.class, using = "permissions")
private WebElement permissionsInput;
protected RoleDefinitionCreationDialogPO(WebDriver driver, WebElement element) {
protected RoleDefinitionCreationAndUpdateDialogPO(WebDriver driver, WebElement element) {
super(driver, element);
}
@@ -24,7 +24,16 @@ public class RoleDefinitionCreationDialogPO extends DataEntryDialogPO {
TextBoxPO.create(driver, roleNameInput).appendText(name);
}
public StringListEditorCompositePO getPermissionsList() {
return StringListEditorCompositePO.create(driver, permissionsInput);
}
public void addPermission(String permission) {
StringListEditorCompositePO.create(driver, permissionsInput).addNewValue(permission);
getPermissionsList().addNewValue(permission);
}
public void clickOkButtonAndExpectPermissionError() {
clickOkButtonOrThrow();
waitForAlertContainingMessageAndAccept("could not be added to group");
}
}
@@ -1,16 +1,38 @@
package com.sap.sailing.selenium.pages.adminconsole.roles;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By.ByName;
import com.sap.sailing.selenium.core.BySeleniumId;
import com.sap.sailing.selenium.core.FindBy;
import com.sap.sailing.selenium.pages.PageArea;
import com.sap.sailing.selenium.pages.adminconsole.security.DataEntryWithSecurityActionsPO;
import com.sap.sailing.selenium.pages.gwt.CellTablePO;
import com.sap.sailing.selenium.pages.gwt.DataEntryPO;
import com.sap.sailing.selenium.pages.gwt.GenericCellTablePO;
public class RoleDefinitionsPanelPO extends PageArea {
public static class RoleEntryPO extends DataEntryWithSecurityActionsPO {
@FindBy(how = ByName.class, using = "UPDATE")
private WebElement updateButton;
public RoleEntryPO(CellTablePO<?> table, WebElement element) {
super(table, element);
}
public String getEventURL() {
return getWebElement().findElement(By.xpath(".//td/div/a")).getAttribute("href");
}
public RoleDefinitionCreationAndUpdateDialogPO openUpdateDialog() {
updateButton.click();
return waitForPO(RoleDefinitionCreationAndUpdateDialogPO::new, "RoleDefinitionEditDialog");
}
}
private static final String CREATE_ROLE_DIALOG = "RoleDefinitionCreationDialog";
@FindBy(how = BySeleniumId.class, using = "RolesCellTable")
@@ -26,23 +48,23 @@ public class RoleDefinitionsPanelPO extends PageArea {
super(driver, element);
}
private CellTablePO<DataEntryPO> getRoleTable() {
return new GenericCellTablePO<>(this.driver, this.roleTable, DataEntryPO.class);
private CellTablePO<RoleEntryPO> getRoleTable() {
return new GenericCellTablePO<>(this.driver, this.roleTable, RoleEntryPO.class);
}
public DataEntryPO findRole(final String username) {
final CellTablePO<DataEntryPO> table = getRoleTable();
for (DataEntryPO entry : table.getEntries()) {
public RoleEntryPO findRole(final String roleName) {
final CellTablePO<RoleEntryPO> table = getRoleTable();
for (RoleEntryPO entry : table.getEntries()) {
final String name = entry.getColumnContent("Name");
if (username.equals(name)) {
if (roleName.equals(name)) {
return entry;
}
}
return null;
}
public RoleDefinitionCreationDialogPO getCreateRoleDialog() {
public RoleDefinitionCreationAndUpdateDialogPO getCreateRoleDialog() {
createRoleButton.click();
final WebElement dialog = findElementBySeleniumId(this.driver, CREATE_ROLE_DIALOG);
return new RoleDefinitionCreationDialogPO(this.driver, dialog);
return waitForPO(RoleDefinitionCreationAndUpdateDialogPO::new, CREATE_ROLE_DIALOG);
}
}
@@ -7,7 +7,7 @@ import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage;
import com.sap.sailing.selenium.pages.adminconsole.roles.RoleDefinitionCreationDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.roles.RoleDefinitionCreationAndUpdateDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.roles.RoleDefinitionsPanelPO;
import com.sap.sailing.selenium.test.AbstractSeleniumTest;
@@ -26,7 +26,7 @@ public class TestRoleDefinitionCreation extends AbstractSeleniumTest {
public void testOpenCreateBoatDialog() throws InterruptedException {
final RoleDefinitionsPanelPO roleManagementPanel = goToRoleDefinitionPanel();
assertNull(roleManagementPanel.findRole(TEST_ROLE));
final RoleDefinitionCreationDialogPO createRoleDialog = roleManagementPanel.getCreateRoleDialog();
final RoleDefinitionCreationAndUpdateDialogPO createRoleDialog = roleManagementPanel.getCreateRoleDialog();
assertNotNull(createRoleDialog);
createRoleDialog.setName(TEST_ROLE);
createRoleDialog.addPermission(TEST_PERMISSION);
@@ -17,6 +17,7 @@ public class RoleDefinitionEditDialog extends AbstractRoleDefinitionDialog {
roleDefinitionId = roleDefinition.getId();
roleDefinitionNameField.setText(roleDefinition.getName());
permissionsList.setValue(roleDefinition.getPermissions());
this.ensureDebugId(this.getClass().getSimpleName());
}
@Override