/******************************************************************************* * 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.HashMap; import java.util.Iterator; import java.util.List; import junit.framework.Assert; 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.AdditionalLinksExtensionEditForm; import org.eclipse.skalli.selenium.pageobjects.ext.util.AddLinkForm; import org.eclipse.skalli.selenium.pageobjects.ext.util.AdditionalLinksExtensionEditFormEntry; import org.eclipse.skalli.selenium.tests.TestUtilities; 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; public class EditPageAdditionalLinksExtensionEditFormTest { private static WebDriver driver; private static MainPage mainPage; private static CreateProjectPage createProjectPage; private static EditPage editPage; private static AdditionalLinksExtensionEditForm 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, AdditionalLinksExtensionEditForm.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 additionalLinksEditFormAddLinkTest() { //add an additional link editForm.clickAddLink(); //initialize the add additional link form AddLinkForm addForm = PageFactory.initElements(driver, AddLinkForm.class); addForm.isDisplayedWithExplicitWait(); String linkGroup = "test"; String pageTitle = "my test"; String url = "http://www.test.org"; String removeLinkName = "remove"; //sends the keys to the fields addForm.sendKeysToLinkGroupField(linkGroup, true); addForm.sendKeysToPageTitleField(pageTitle); addForm.sendKeysToUrlField(url); //click ok and close button of the form addForm.clickOkAndCloseButton(); editForm.isDisplayedWithExplicitWait(); //get the link entries List<AdditionalLinksExtensionEditFormEntry> linkEntries = editForm.getLinkEntries(); //verify them int size = linkEntries.size(); Assert.assertTrue("the number of entries is incorrect (2 expected - " + size + " found)", size == 2); //link group String linkGroup0 = linkEntries.get(0).getLinkGroup(); HashMap<String, WebElement> links0 = linkEntries.get(0).getLinks(); int linksSize0 = links0.size(); Assert.assertTrue("link group of the link group entry is incorrect (" + linkGroup + " expected - " + linkGroup0 + " found)", linkGroup0.equals(linkGroup)); Assert.assertTrue("the number of option links differs (1 expected - " + linksSize0 + " found)", linksSize0 == 1); Assert.assertTrue("the link entry is incorrect (" + removeLinkName + " expected)", links0.containsKey(removeLinkName)); //sub link String linkGroup1 = linkEntries.get(1).getLinkGroup(); HashMap<String, WebElement> links1 = linkEntries.get(1).getLinks(); int linksSize1 = links1.size(); Assert.assertTrue("link group of the link group entry is incorrect (" + linkGroup + " expected - " + linkGroup1 + " found)", linkGroup1.equals(linkGroup)); Assert.assertTrue("the number of option links differs (2 expected - " + linksSize1 + " found)", linksSize1 == 2); Assert.assertTrue("the link entry is incorrect (" + removeLinkName + " expected)", links1.containsKey(removeLinkName)); Assert.assertTrue("the link entry is incorrect (" + pageTitle + " expected)", links1.containsKey(pageTitle)); } @Test public void additionalLinksEditFormPrintInformationTest() { //get the link groups List<WebElement> linkGroups = editForm.getLinkGroups(); //print them for (Iterator<WebElement> iterator = linkGroups.iterator(); iterator.hasNext();) { WebElement linkGroup = (WebElement) iterator.next(); System.out.println("link group: " + linkGroup.getText()); } System.out.println("-------"); //get the link entries (contains the link groups as entries too - with links) List<AdditionalLinksExtensionEditFormEntry> linkEntries = editForm.getLinkEntries(); //print some information for (Iterator<AdditionalLinksExtensionEditFormEntry> iterator = linkEntries.iterator(); iterator.hasNext();) { AdditionalLinksExtensionEditFormEntry entry = (AdditionalLinksExtensionEditFormEntry) iterator.next(); System.out.println("Link entry"); System.out.println("link group: " + entry.getLinkGroup()); //get the links HashMap<String, WebElement> links = entry.getLinks(); //and print them for (Iterator<String> iterator2 = links.keySet().iterator(); iterator2.hasNext();) { String linkName = (String) iterator2.next(); System.out.println("link name: " + linkName); } System.out.println(); } } }