/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.selenium.tests.simple; import java.util.Iterator; import java.util.List; import org.eclipse.skalli.selenium.pageobjects.concrete.CreateProjectPage; import org.eclipse.skalli.selenium.pageobjects.concrete.EditPage; import org.eclipse.skalli.selenium.pageobjects.concrete.MainPage; import org.eclipse.skalli.selenium.pageobjects.ext.editform.ScrumExtensionEditForm; import org.eclipse.skalli.selenium.pageobjects.ext.util.AddUserForm; import org.eclipse.skalli.selenium.pageobjects.ext.util.RemovableUserEntry; import org.eclipse.skalli.selenium.tests.TestUtilities; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.Select; public class EditPageScrumExtensionEditFormTest { private static WebDriver driver; private static MainPage mainPage; private static CreateProjectPage createProjectPage; private static EditPage editPage; private static ScrumExtensionEditForm editForm; @BeforeClass public static void setupClass() { driver = TestUtilities.initializeDriver(); initializePageObjects(); mainPage.isDisplayedWithExplicitWait(); //navigate to the edit page mainPage.clickCreateProjectLink(); createProjectPage.isDisplayedWithExplicitWait(); createProjectPage.clickCreateProjectButton(); editPage.isDisplayedWithExplicitWait(); //initialize extensions editForm = PageFactory.initElements(driver, ScrumExtensionEditForm.class); editForm.makeExtensionEditable(); } private static void initializePageObjects() { mainPage = PageFactory.initElements(driver, MainPage.class); createProjectPage = PageFactory.initElements(driver, CreateProjectPage.class); editPage = PageFactory.initElements(driver, EditPage.class); } @Before public void setup() { //checks if the edit page is displayed before every test editPage.isDisplayedWithExplicitWait(); } @Test public void projectMembersEditFormScrumMastersAddUserLinkTest() { //add a scrum master editForm.clickScrumMastersAddUserLink(); //initialize the add user form AddUserForm addUserForm = PageFactory.initElements(driver, AddUserForm.class); addUserForm.isDisplayedWithExplicitWait(); //close the form addUserForm.clickCloseButton(); } @Test public void projectMembersEditFormProductOwnersAddUserLinkTest() { //add a product owners editForm.clickProductOwnersAddUserLink(); //initialize the add user form AddUserForm addUserForm = PageFactory.initElements(driver, AddUserForm.class); addUserForm.isDisplayedWithExplicitWait(); //close the form addUserForm.clickCloseButton(); } @Test public void projectMembersEditFormScrumMastersUserNumberTest() { Assert.assertTrue("scrum masters user number differs", editForm.getNumberOfScrumMastersUsers() == 0); } @Test public void projectMembersEditFormProductOwnersUserNumberTest() { Assert.assertTrue("project leads user number differs", editForm.getNumberOfProductOwnersUsers() == 0); } @Test public void projectMembersEditFormScrumMastersAddUserTest() { //add a scrum master editForm.clickScrumMastersAddUserLink(); //initialize the add user form AddUserForm addUserForm = PageFactory.initElements(driver, AddUserForm.class); addUserForm.isDisplayedWithExplicitWait(); //search for j addUserForm.sendKeysToSearchForField("j"); addUserForm.submitSearchForContent(); //select the first entry found by the search addUserForm.getSelect().selectByIndex(0); //click add and close button of the form addUserForm.clickAddAndCloseButton(); } @Test public void projectMembersEditFormProductOwnersAddUserTest() { //add a product owners editForm.clickProductOwnersAddUserLink(); //initialize the add user form AddUserForm addUserForm = PageFactory.initElements(driver, AddUserForm.class); addUserForm.isDisplayedWithExplicitWait(); //search for j addUserForm.sendKeysToSearchForField("j"); addUserForm.submitSearchForContent(); //select the first entry found by the search addUserForm.getSelect().selectByIndex(0); //click add and close button of the form addUserForm.clickAddAndCloseButton(); } @Test public void projectMembersEditFormProductOwnersAddMultipleUsersTest() { //click add product owners editForm.clickProductOwnersAddUserLink(); //initialize the add user form AddUserForm addUserForm = PageFactory.initElements(driver, AddUserForm.class); addUserForm.isDisplayedWithExplicitWait(); for (int i = 0; i < 3; i++) { //search for j addUserForm.sendKeysToSearchForField("j"); addUserForm.submitSearchForContent(); //select entry 0, 1, 2 and... Select select = addUserForm.getSelect(); select.selectByIndex(i); //...add the entry addUserForm.clickAddButton(); } //close the form addUserForm.clickCloseButton(); } @Test public void projectMembersEditFormPrintScrumMastersUserInformationTest() { //get the scrum masters List<RemovableUserEntry> projectLeadUsers = editForm.getScrumMastersUsers(); //and print some information for (Iterator<RemovableUserEntry> iterator = projectLeadUsers.iterator(); iterator.hasNext();) { RemovableUserEntry projectLeadUser = (RemovableUserEntry) iterator.next(); System.out.println("Scrum Master User: " + projectLeadUser.getName()); System.out.println("number of links: " + projectLeadUser.getNumberOfUserLinks()); //print the links List<WebElement> userLinks = projectLeadUser.getUserLinks(); for (Iterator<WebElement> iterator2 = userLinks.iterator(); iterator2.hasNext();) { WebElement webElement = (WebElement) iterator2.next(); System.out.println("Link name: " + webElement.getText()); System.out.println("Link: " + webElement.getAttribute("href")); } } } @Test public void projectMembersEditFormPrintProjectLeadsUserInformationTest() { //get the product owners List<RemovableUserEntry> committersUsers = editForm.getProductOwnersUsers(); //and print some information for (Iterator<RemovableUserEntry> iterator = committersUsers.iterator(); iterator.hasNext();) { RemovableUserEntry committersUser = (RemovableUserEntry) iterator.next(); System.out.println("Project Lead User: " + committersUser.getName()); System.out.println("number of links: " + committersUser.getNumberOfUserLinks()); //print the links List<WebElement> userLinks = committersUser.getUserLinks(); for (Iterator<WebElement> iterator2 = userLinks.iterator(); iterator2.hasNext();) { WebElement webElement = (WebElement) iterator2.next(); System.out.println("Link name: " + webElement.getText()); System.out.println("Link: " + webElement.getAttribute("href")); } } } @Test public void projectMembersEditFormBacklogFieldTest() { String text = "test"; editForm.sendKeysToBacklogField(text); Assert.assertTrue("value of backlog is not \"" + text + "\"", editForm.getBacklogFieldContent().equals(text)); } }