diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/roles/RoleDefinitionCreationAndUpdateDialogPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/roles/RoleDefinitionCreationAndUpdateDialogPO.java index 530dbf6b223..42b4a1a5a2a 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/roles/RoleDefinitionCreationAndUpdateDialogPO.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/roles/RoleDefinitionCreationAndUpdateDialogPO.java @@ -8,6 +8,7 @@ import com.sap.sailing.selenium.core.FindBy; import com.sap.sailing.selenium.pages.adminconsole.common.ErrorDialogPO; import com.sap.sailing.selenium.pages.common.DataEntryDialogPO; import com.sap.sailing.selenium.pages.gwt.StringListEditorCompositePO; +import com.sap.sailing.selenium.pages.gwt.StringListEditorCompositePO.ValueEntryPO; import com.sap.sailing.selenium.pages.gwt.TextBoxPO; public class RoleDefinitionCreationAndUpdateDialogPO extends DataEntryDialogPO { @@ -33,6 +34,15 @@ public class RoleDefinitionCreationAndUpdateDialogPO extends DataEntryDialogPO { getPermissionsList().addNewValue(permission); } + public boolean isPermissionPresent(String permission) { + ValueEntryPO findValue = getPermissionsList().findValue(permission); + return findValue != null ? true : false; + } + + public void removePermission(String permission) { + getPermissionsList().removeValueByName(permission); + } + public void clickOkButtonAndExpectPermissionError() { clickOkButtonOrThrow(); waitForPO(ErrorDialogPO::new, "ErrorDialog", 10).assertTitleContainsTextAndClose("Not permitted to grant permissions for role"); diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/gwt/StringListEditorCompositePO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/gwt/StringListEditorCompositePO.java index 8af57b6767b..f590d283afe 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/gwt/StringListEditorCompositePO.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/gwt/StringListEditorCompositePO.java @@ -8,15 +8,56 @@ import com.sap.sailing.selenium.core.FindBy; import com.sap.sailing.selenium.pages.PageArea; public class StringListEditorCompositePO extends PageArea { + + public static class ValueEntryPO extends DataEntryPO { + + @FindBy(how = BySeleniumId.class, using = "RemoveButton") + private WebElement deleteButton; + @FindBy(how = BySeleniumId.class, using = "ValueTextBox") + private WebElement valueTextBox; + + + public ValueEntryPO(CellTablePO table, WebElement element) { + super(table, element); + } + + public void deleteValueEntry() { + deleteButton.click(); + } + + public String getValueEntryName(){ + TextBoxPO textBoxPO = new TextBoxPO(this.driver, valueTextBox); + String text = textBoxPO.getWebElement().getAttribute("value"); + return text; + } + } + @FindBy(how = BySeleniumId.class, using = "AddButton") private WebElement addValueButton; @FindBy(how = BySeleniumId.class, using = "InputSuggestBox") private WebElement valueInput; + @FindBy(how = BySeleniumId.class, using = "ExpandedValuesGrid") + private WebElement valueGrid; private StringListEditorCompositePO(WebDriver driver, WebElement element) { super(driver, element); } + private CellTablePO getExpandedValuesGrid() { + return new GenericCellTablePO<>(this.driver, this.valueGrid, ValueEntryPO.class); + } + + public ValueEntryPO findValue(final String permission) { + final CellTablePO table = getExpandedValuesGrid(); + for (ValueEntryPO entry : table.getEntries()) { + final String name = entry.getValueEntryName(); + if (name != null) { + return entry; + } + } + return null; + } + public static StringListEditorCompositePO create(WebDriver driver, WebElement permissionsInput) { return new StringListEditorCompositePO(driver, permissionsInput); } @@ -25,4 +66,11 @@ public class StringListEditorCompositePO extends PageArea { SuggestBoxPO.create(driver, valueInput).appendText(value); addValueButton.click(); } + + public void removeValueByName(String name) { + ValueEntryPO findValue = findValue(name); + if(findValue != null) { + findValue.deleteValueEntry(); + } + } }