From da59a32a400901d8bd8ff4175d209c968931077e Mon Sep 17 00:00:00 2001 From: kate Date: Wed, 20 Nov 2019 15:13:56 +0100 Subject: [PATCH] forward workitem test --- .../schrodinger/scenarios/CaseTests.java | 74 ++++++++++++++++++- .../component/modal/ForwardWorkitemModal.java | 32 ++++++++ .../component/modal/ObjectBrowserModal.java | 4 +- .../modal/ObjectBrowserModalTable.java | 4 +- .../midpoint/schrodinger/page/BasicPage.java | 2 +- .../page/cases/WorkitemDetailsPanel.java | 28 ++++++- 6 files changed, 137 insertions(+), 7 deletions(-) create mode 100644 tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ForwardWorkitemModal.java diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/CaseTests.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/CaseTests.java index f443ab0b181..27c9eada393 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/CaseTests.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/CaseTests.java @@ -8,17 +8,24 @@ import com.codeborne.selenide.Condition; import com.codeborne.selenide.SelenideElement; +import com.evolveum.midpoint.schrodinger.MidPoint; +import com.evolveum.midpoint.schrodinger.component.modal.ConfirmationModal; +import com.evolveum.midpoint.schrodinger.component.modal.ForwardWorkitemModal; +import com.evolveum.midpoint.schrodinger.component.modal.ObjectBrowserModal; import com.evolveum.midpoint.schrodinger.page.cases.*; import com.evolveum.midpoint.schrodinger.page.user.ListUsersPage; import com.evolveum.midpoint.schrodinger.page.user.UserPage; import com.evolveum.midpoint.schrodinger.util.ConstantsUtil; import com.evolveum.midpoint.testing.schrodinger.TestBase; +import org.openqa.selenium.By; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; +import static com.codeborne.selenide.Selenide.$; + /** * Created by honchar. */ @@ -33,6 +40,7 @@ public class CaseTests extends TestBase { public static final String REJECT_WORKITEM_TEST_USER_NAME = "rejectWorkitemTestUser"; public static final String CLAIM_WORKITEM_TEST_USER_NAME = "claimWorkitemTestUser"; public static final String FORWARD_WORKITEM_TEST_USER_NAME = "forwardWorkitemTestUser"; + public static final String FORWARD_WORKITEM_TO_USER_NAME = "forwardToUser"; @BeforeMethod private void importRoleWithApprovement() { @@ -141,7 +149,7 @@ public void test120approveCaseAction() { .changesAreApplied()); } - @Test (dependsOnMethods = {"test110isCaseCreated"}) + @Test public void test130rejectCaseAction() { createUserAndAssignRoleWithApprovement(REJECT_WORKITEM_TEST_USER_NAME); @@ -181,6 +189,70 @@ public void test130rejectCaseAction() { .changesAreRejected()); } + @Test + public void test140forwardCaseAction() { + createUserAndAssignRoleWithApprovement(FORWARD_WORKITEM_TEST_USER_NAME); + + UserPage user = basicPage.newUser(); + user.selectTabBasic() + .form() + .addAttributeValue("name", FORWARD_WORKITEM_TO_USER_NAME) + .and() + .and() + .clickSave(); + + AllRequestsPage allRequestsPage = basicPage.listAllRequests(); + WorkitemDetailsPanel workitemDetailsPanel = allRequestsPage + .table() + .search() + .byName() + .inputValue(REQUEST_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .updateSearch() + .and() + .clickByPartialName(REQUEST_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .selectTabChildren() + .table() + .clickByPartialName(ASSIGNING_ROLE_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .selectTabWorkitems() + .table() + .clickByName(ASSIGNING_ROLE_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME); + + ForwardWorkitemModal forwardWorkitemModal = workitemDetailsPanel.forwardButtonClick(); + forwardWorkitemModal + .table() + .search() + .byName() + .inputValue(FORWARD_WORKITEM_TO_USER_NAME) + .updateSearch(); + forwardWorkitemModal + .table() + .clickByName(FORWARD_WORKITEM_TO_USER_NAME); + + Assert.assertTrue(workitemDetailsPanel + .forwardOperationUserSelectionPerformed() + .clickYes() + .feedback() + .isSuccess()); + + allRequestsPage = basicPage.listAllRequests(); + Assert.assertTrue(allRequestsPage + .table() + .search() + .byName() + .inputValue(REQUEST_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .updateSearch() + .and() + .clickByPartialName(REQUEST_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .selectTabChildren() + .table() + .clickByPartialName(ASSIGNING_ROLE_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .selectTabWorkitems() + .table() + .clickByName(ASSIGNING_ROLE_CASE_NAME + FORWARD_WORKITEM_TEST_USER_NAME) + .matchApproverElementValue(FORWARD_WORKITEM_TO_USER_NAME)); + + } + private boolean isCaseMenuItemActive(String menuIdentifier, boolean checkByLabelText){ SelenideElement casesMenuItemElement; if (!checkByLabelText) { diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ForwardWorkitemModal.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ForwardWorkitemModal.java new file mode 100644 index 00000000000..d1d62e8140a --- /dev/null +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ForwardWorkitemModal.java @@ -0,0 +1,32 @@ +package com.evolveum.midpoint.schrodinger.component.modal; + +import com.codeborne.selenide.Condition; +import com.codeborne.selenide.SelenideElement; +import com.evolveum.midpoint.schrodinger.MidPoint; +import com.evolveum.midpoint.schrodinger.util.Schrodinger; + +import static com.codeborne.selenide.Selenide.$; + +public class ForwardWorkitemModal extends ModalBox { + + public ForwardWorkitemModal(T parent, SelenideElement parentElement) { + super(parent, parentElement); + } + + public ObjectBrowserModalTable> table(){ + SelenideElement box = $(Schrodinger.byElementAttributeValue("div", "class","box boxed-table")) + .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); + + return new ObjectBrowserModalTable>(this, box){ + public T clickByName(String name){ + getParentElement().$(Schrodinger.byElementValue("span", "data-s-id", "label", name)) + .waitUntil(Condition.appears, MidPoint.TIMEOUT_DEFAULT_2_S).click(); + + box.waitUntil(Condition.disappears, MidPoint.TIMEOUT_DEFAULT_2_S); + + return getParent().getParent(); + } + }; + } + +} diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModal.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModal.java index 7ca6cf51098..60f71e05397 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModal.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModal.java @@ -30,11 +30,11 @@ public ObjectBrowserModal selectType(String type) { return this; } - public ObjectBrowserModalTable table(){ + public ObjectBrowserModalTable> table(){ SelenideElement box = $(Schrodinger.byElementAttributeValue("div", "class","box boxed-table")) .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); - return new ObjectBrowserModalTable(this, box); + return new ObjectBrowserModalTable>(this, box); } } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModalTable.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModalTable.java index a149e926608..e8e4604d051 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModalTable.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/modal/ObjectBrowserModalTable.java @@ -15,9 +15,9 @@ /** * Created by honchar */ -public class ObjectBrowserModalTable extends Table>{ +public class ObjectBrowserModalTable> extends Table{ - public ObjectBrowserModalTable(ObjectBrowserModal parent, SelenideElement parentElement){ + public ObjectBrowserModalTable(M parent, SelenideElement parentElement){ super(parent, parentElement); } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java index 3c49a0cbb60..4afe057611d 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java @@ -385,7 +385,7 @@ private SelenideElement getMainMenuItemElement(String topLevelMenuKey, String ma SelenideElement mainMenuLi = mainMenu.parent().parent(); if (!mainMenuLi.has(Condition.cssClass("active"))) { mainMenu.click(); - mainMenuLi.waitUntil(Condition.cssClass("active"),MidPoint.TIMEOUT_DEFAULT_2_S).shouldHave(Condition.cssClass("active")); + mainMenuLi.waitUntil(Condition.cssClass("active"),MidPoint.TIMEOUT_MEDIUM_6_S).shouldHave(Condition.cssClass("active")); } return mainMenu; } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/WorkitemDetailsPanel.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/WorkitemDetailsPanel.java index c85ca5b32af..4ca67ec627a 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/WorkitemDetailsPanel.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/WorkitemDetailsPanel.java @@ -10,8 +10,15 @@ import com.codeborne.selenide.SelenideElement; import com.evolveum.midpoint.schrodinger.MidPoint; import com.evolveum.midpoint.schrodinger.component.Component; +import com.evolveum.midpoint.schrodinger.component.modal.ConfirmationModal; +import com.evolveum.midpoint.schrodinger.component.modal.ForwardWorkitemModal; +import com.evolveum.midpoint.schrodinger.component.modal.ObjectBrowserModal; import com.evolveum.midpoint.schrodinger.page.BasicPage; import com.evolveum.midpoint.schrodinger.util.Schrodinger; +import org.openqa.selenium.By; + +import static com.codeborne.selenide.Selectors.byText; +import static com.codeborne.selenide.Selenide.$; /** * Created by Kate Honchar @@ -36,11 +43,22 @@ public void rejectButtonClick(){ .click(); } - public void forwardButtonClick(){ + public ForwardWorkitemModal forwardButtonClick(){ getParentElement() .$(Schrodinger.byDataId("workItemForwardButton")) .waitUntil(Condition.visible, MidPoint.TIMEOUT_DEFAULT_2_S) .click(); + SelenideElement modalWindow = $(By.className("wicket-modal")) + .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); + ForwardWorkitemModal

forwardWorkitemModal = new ForwardWorkitemModal

(getParent(), modalWindow); + return forwardWorkitemModal; + } + + public ConfirmationModal

forwardOperationUserSelectionPerformed(){ + SelenideElement modalWindow = $(Schrodinger.byElementAttributeValue("div", "aria-labelledby", "Confirm forwarding")) + .waitUntil(Condition.appears, MidPoint.TIMEOUT_DEFAULT_2_S); + ConfirmationModal

confirmationModal = new ConfirmationModal

(getParent(), modalWindow); + return confirmationModal; } public void claimButtonClick(){ @@ -50,4 +68,12 @@ public void claimButtonClick(){ .click(); } + public boolean matchApproverElementValue(String approver){ + return getParentElement() + .$(Schrodinger.byDataId("approver")) + .waitUntil(Condition.visible, MidPoint.TIMEOUT_DEFAULT_2_S) + .$(byText(approver)) + .waitUntil(Condition.visible, MidPoint.TIMEOUT_DEFAULT_2_S) + .is(Condition.visible); + } }