/*******************************************************************************
* 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 org.eclipse.skalli.selenium.pageobjects.concrete.EditPage;
import org.eclipse.skalli.selenium.pageobjects.concrete.MainPage;
import org.eclipse.skalli.selenium.pageobjects.concrete.ProjectDetailsPage;
import org.eclipse.skalli.selenium.pageobjects.ext.AbstractExtensionEditForm;
import org.eclipse.skalli.selenium.tests.Constants;
import org.eclipse.skalli.selenium.tests.TestUtilities;
import org.eclipse.skalli.selenium.utils.DriverProvider;
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.support.PageFactory;
public class EditPageTest {
private static WebDriver driver;
private static EditPage editPage;
private static ProjectDetailsPage projectDetailsPage;
@BeforeClass
public static void setupClass() {
driver = TestUtilities.initializeDriver();
PageFactory.initElements(driver, MainPage.class).isDisplayedWithExplicitWait();
initializePageObjects();
//navigate to an existing project and wait for the ProjectDetailsPage to be displayed
DriverProvider.navigateToSubUrl(driver, Constants.SKALLI_PROJECT_SUB_URL);
projectDetailsPage.isDisplayedWithExplicitWait();
//navigate to the edit page of the existing project
projectDetailsPage.clickEditLink();
editPage.isDisplayedWithExplicitWait();
}
private static void initializePageObjects() {
editPage = PageFactory.initElements(driver, EditPage.class);
projectDetailsPage = PageFactory.initElements(driver, ProjectDetailsPage.class);
}
@Before
public void setup() {
//checks if the EditPage is displayed without extensions before every test
editPage.isDisplayedWithExplicitWait();
}
@Test
public void editPageAreExtensionsDisplayedTest() {
//make extensions editable
for (Iterator<AbstractExtensionEditForm> iterator = editPage.getExtensions().iterator(); iterator.hasNext();) {
AbstractExtensionEditForm editForm = (AbstractExtensionEditForm) iterator.next();
editForm.makeExtensionEditable();
editForm.isDisplayedWithExplicitWait();
Assert.assertTrue(editForm.getTitle() + " is not editable", editForm.isEditable());
Assert.assertTrue("extension " + editForm.getTitle() + " is not displayed",
editForm.isDisplayedWithExplicitWait());
}
//checks if the extensions are displayed with sub elements if they exist
editPage.areExtensionsDisplayed();
}
}