package com.evolveum.midpoint.testing.selenide.tests.basictests; import com.evolveum.midpoint.testing.selenide.tests.AbstractSelenideTest; import org.openqa.selenium.By; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Map; import static com.codeborne.selenide.Selectors.byAttribute; import static com.codeborne.selenide.Selectors.byText; import static com.codeborne.selenide.Selenide.$; import static com.codeborne.selenide.Selenide.close; import static com.codeborne.selenide.Condition.*; /** * Created by Kate on 24.08.2015. */ public class OrganizationTests extends AbstractSelenideTest { //Organization fields' names public static final String ORGANIZATION_NAME_FIELD = "Name"; public static final String ORGANIZATION_DISPLAY_NAME_FIELD = "Display Name"; public static final String ORGANIZATION_DESCRIPTION_FIELD = "Description"; public static final String ORGANIZATION_ORG_TYPE_FIELD = "Type"; public static final String ORGANIZATION_IDENTIFIER_FIELD = "Identifier"; public static final String ORGANIZATION_COST_CENTER_FIELD = "Cost Center"; public static final String ORGANIZATION_LOCALITY_FIELD = "Locality"; public static final String ORGANIZATION_MAIL_DOMAIN_FIELD = "Mail Domain"; //Organization fields' values public static final String ORGANIZATION_NAME_VALUE = "TestOrganization"; public static final String SUB_ORGANIZATION_NAME_VALUE = "TestSubOrganization"; public static final String ORGANIZATION_DISPLAY_NAME_VALUE = "TestOrgDisplayName"; public static final String SUB_ORGANIZATION_DISPLAY_NAME_VALUE = "TestSubOrgDisplayName"; public static final String ORGANIZATION_DESCRIPTION_VALUE = "TestDescription"; public static final String ORGANIZATION_ORG_TYPE_VALUE = "TestOrgType"; public static final String ORGANIZATION_IDENTIFIER_VALUE = "TestIdentifier"; public static final String ORGANIZATION_COST_CENTER_VALUE = "TestCostCenter"; public static final String ORGANIZATION_LOCALITY_VALUE= "TestLocality"; public static final String ORGANIZATION_MAIL_DOMAIN_VALUE = "TestMailDomain"; private Map<String, String> organizationFieldsMap = new HashMap<>(); private Map<String, String> subOrganizationFieldsMap = new HashMap<>(); private Map<String, String> updatedOrganizationFieldsMap = new HashMap<>(); @Test(priority = 0) public void test001createOrganisationTest(){ close(); login(); checkLoginIsPerformed(); //fill in organization fields organizationFieldsMap.put(ORGANIZATION_NAME_FIELD, ORGANIZATION_NAME_VALUE); organizationFieldsMap.put(ORGANIZATION_DISPLAY_NAME_FIELD, ORGANIZATION_DISPLAY_NAME_VALUE); organizationFieldsMap.put(ORGANIZATION_DESCRIPTION_FIELD, ORGANIZATION_DESCRIPTION_VALUE); organizationFieldsMap.put(ORGANIZATION_ORG_TYPE_FIELD, ORGANIZATION_ORG_TYPE_VALUE); organizationFieldsMap.put(ORGANIZATION_IDENTIFIER_FIELD, ORGANIZATION_IDENTIFIER_VALUE); organizationFieldsMap.put(ORGANIZATION_COST_CENTER_FIELD, ORGANIZATION_COST_CENTER_VALUE); organizationFieldsMap.put(ORGANIZATION_LOCALITY_FIELD, ORGANIZATION_LOCALITY_VALUE); organizationFieldsMap.put(ORGANIZATION_MAIL_DOMAIN_FIELD, ORGANIZATION_MAIL_DOMAIN_VALUE); //create organization createOrganization(organizationFieldsMap, ""); checkOperationStatusOk("Save (GUI)"); //open created organization tab $(By.linkText(ORGANIZATION_DISPLAY_NAME_VALUE)).shouldBe(visible).click(); $(byAttribute("class", "box-body org-tree-container")).shouldBe(visible).find(byAttribute("class", "cog")).shouldBe(visible).click(); $(By.linkText("Edit")).shouldBe(visible).click(); //check role attributes are filled in with correct values checkObjectAttributesValues(organizationFieldsMap); } @Test(priority = 1, dependsOnMethods = {"test001createOrganisationTest"}) public void test002createSubOrganizationTest(){ close(); login(); checkLoginIsPerformed(); //create sub organization subOrganizationFieldsMap.put(ORGANIZATION_NAME_FIELD, SUB_ORGANIZATION_NAME_VALUE); subOrganizationFieldsMap.put(ORGANIZATION_DISPLAY_NAME_FIELD, SUB_ORGANIZATION_DISPLAY_NAME_VALUE); createOrganization(subOrganizationFieldsMap, ORGANIZATION_DISPLAY_NAME_VALUE); //check if Success message appears checkOperationStatusOk("Save (GUI)"); //check if sub organization appeared in the Children org. units section $(byAttribute("about", "childUnitTable")).find(By.linkText(SUB_ORGANIZATION_DISPLAY_NAME_VALUE)); } @Test(priority = 2, dependsOnMethods = {"test001createOrganisationTest", "test002createSubOrganizationTest"} ) public void test003updateOrganizationTest(){ close(); login(); checkLoginIsPerformed(); //fill in updated organization fields map updatedOrganizationFieldsMap.put(ORGANIZATION_NAME_FIELD, ORGANIZATION_NAME_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_DISPLAY_NAME_FIELD, ORGANIZATION_DISPLAY_NAME_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_DESCRIPTION_FIELD, ORGANIZATION_DESCRIPTION_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_ORG_TYPE_FIELD, ORGANIZATION_ORG_TYPE_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_IDENTIFIER_FIELD, ORGANIZATION_IDENTIFIER_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_COST_CENTER_FIELD, ORGANIZATION_COST_CENTER_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_LOCALITY_FIELD, ORGANIZATION_LOCALITY_VALUE + UPDATED_VALUE); updatedOrganizationFieldsMap.put(ORGANIZATION_MAIL_DOMAIN_FIELD, ORGANIZATION_MAIL_DOMAIN_VALUE + UPDATED_VALUE); //click Org. structure menu if (!$(By.partialLinkText("Organization tree")).isDisplayed()) $(By.partialLinkText("Org. structure")).shouldBe(visible).click(); //click Organization tree menu item $(By.partialLinkText("Organization tree")).shouldBe(visible).click(); //open created organization tab $(By.linkText(ORGANIZATION_DISPLAY_NAME_VALUE)).shouldBe(visible).click(); //click on menu icon in the Org. hierarchy row $(byAttribute("class", "box-body org-tree-container")).shouldBe(visible).find(byAttribute("class", "cog")).hover(); $(byAttribute("class", "box-body org-tree-container")).shouldBe(visible).find(byAttribute("class", "cog")).shouldBe(visible).click(); //Click Edit menu item $(By.linkText("Edit")).shouldBe(visible).click(); //fill in fields with updated values setFieldValues(updatedOrganizationFieldsMap); //click Save button $(By.linkText("Save")).shouldBe(visible).click(); //open created organization tab $(By.linkText(ORGANIZATION_DISPLAY_NAME_VALUE + UPDATED_VALUE)).shouldBe(visible).click(); } @Test (priority = 3, dependsOnMethods = {"test001createOrganisationTest", "test003updateOrganizationTest"}) public void test004deleteOrganizationTest(){ close(); login(); checkLoginIsPerformed(); //click Organization tree menu item if (!$(By.partialLinkText("Organization tree")).isDisplayed()) $(By.partialLinkText("Org. structure")).shouldBe(visible).click(); $(By.partialLinkText("Organization tree")).shouldBe(visible).click(); //open created organization tab $(By.partialLinkText(ORGANIZATION_DISPLAY_NAME_VALUE)).shouldBe(visible).click(); //click on menu icon in the Org. hierarchy row $(byAttribute("class", "box-body org-tree-container")).shouldBe(visible).find(byAttribute("class", "cog")).hover(); $(byAttribute("class", "box-body org-tree-container")).shouldBe(visible).find(byAttribute("class", "cog")).shouldBe(visible).click(); //Click Delete menu item $(By.linkText("Delete")).shouldBe(visible).click(); //Click Yes button in the Confirm delete window $(By.linkText("Yes")).shouldBe(visible).click(); //check Confirm delete window disappears $(byText("Confirm delete")).should(disappear); //check if Success message appears checkOperationStatusOk("Delete object (Gui)"); //open created organization tab $(By.linkText(ORGANIZATION_DISPLAY_NAME_VALUE + UPDATED_VALUE)).shouldNot(exist); } public void createOrganization(Map<String, String> organizationFieldsMap, String parentOrgDisplayName){ // must go over Organization tree if (parentOrgDisplayName != null && !parentOrgDisplayName.isEmpty()){ // click Organization tree if (!$(By.partialLinkText("Organization tree")).isDisplayed()) { $(By.partialLinkText("Org. structure")).shouldBe(visible).click(); } $(By.partialLinkText("Organization tree")).shouldBe(visible).click(); // click to organization $(By.linkText(parentOrgDisplayName)).shouldBe(visible).click(); //click on the menu icon in the Organisation section $(byAttribute("class", "box-body org-tree-container")).shouldBe(visible).find(byAttribute("class", "cog")).shouldBe(visible).click(); //click Add org. unit (root is selected) $(By.linkText("Create child")).shouldBe(visible).click(); setFieldValues(organizationFieldsMap); //click Save button $(By.linkText("Save")).shouldBe(visible).click(); } // create root org else { if (!$(By.partialLinkText("New organization")).isDisplayed()) { $(By.partialLinkText("Org. structure")).shouldBe(visible).click(); } $(By.partialLinkText("New organization")).shouldBe(visible).click(); setFieldValues(organizationFieldsMap); //click Save button $(By.linkText("Save")).shouldBe(visible).click(); } } }