/*******************************************************************************
* 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.ArrayList;
import java.util.Iterator;
import java.util.List;
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 AbstractEditPageTest {
private static WebDriver driver;
private static EditPage editPage;
private static ProjectDetailsPage projectDetailsPage;
private static List<AbstractExtensionEditForm> extensions;
@BeforeClass
public static void setupClass() {
driver = TestUtilities.initializeDriver();
PageFactory.initElements(driver, MainPage.class).isDisplayedWithExplicitWait();
initializePageObjects();
//navigate to an existing sub project
DriverProvider.navigateToSubUrl(driver, Constants.SKALLI_PROJECT_SUB_URL);
projectDetailsPage.isDisplayedWithExplicitWait();
//go to the edit page
projectDetailsPage.clickEditLink();
editPage.isDisplayedWithExplicitWait();
//initialize the abstract extensions
extensions = new ArrayList<AbstractExtensionEditForm>();
for (int i = 0; i < AbstractExtensionEditForm.getNumberOfExtensions(driver); i++) {
extensions.add(new AbstractExtensionEditForm(driver, i) {
@Override
protected boolean isExtensionContentDisplayed() {
return true;
}
});
}
}
private static void initializePageObjects() {
editPage = PageFactory.initElements(driver, EditPage.class);
projectDetailsPage = PageFactory.initElements(driver, ProjectDetailsPage.class);
}
@Before
public void setup() {
//check if the edit page is displayed before every test
editPage.isDisplayedWithExplicitWait();
}
@Test
public void printExtensionInformationTest() {
System.out.println("Number of extensions: " + AbstractExtensionEditForm.getNumberOfExtensions(driver));
System.out.println();
//print abstract extension information
for (Iterator<AbstractExtensionEditForm> iterator = extensions.iterator(); iterator.hasNext();) {
AbstractExtensionEditForm editForm = (AbstractExtensionEditForm) iterator.next();
System.out.println(editForm.getTitle());
System.out.println(editForm.getDescription());
System.out.println("isEditable: " + editForm.isEditable());
System.out.println("isInherited: " + editForm.isInherited());
System.out.println("isDiabled: " + editForm.isDisabled());
System.out.println("isShown: " + editForm.isShown());
System.out.println();
}
}
@Test
public void numberOfExtensionsTest() {
Assert.assertTrue("the number of extensions is not correct",
AbstractExtensionEditForm.getNumberOfExtensions(driver) == 9);
}
@Test
public void extensionIsDisplayedTest() {
//check if every extension is displayed (only the abstract extension elements)
for (Iterator<AbstractExtensionEditForm> iterator = extensions.iterator(); iterator.hasNext();) {
AbstractExtensionEditForm editForm = (AbstractExtensionEditForm) iterator.next();
Assert.assertTrue("extension " + editForm.getTitle() + " is not displayed",
editForm.isDisplayedWithExplicitWait());
}
}
@Test
public void makeExtensionsEditableTest() {
for (Iterator<AbstractExtensionEditForm> iterator = extensions.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());
}
}
@Test
public void makeExtensionsInheritedTest() {
for (Iterator<AbstractExtensionEditForm> iterator = extensions.iterator(); iterator.hasNext();) {
AbstractExtensionEditForm editForm = (AbstractExtensionEditForm) iterator.next();
editForm.makeExtensionInherited();
editForm.isDisplayedWithExplicitWait();
//not checking Basics... cannot be inherited
if (!editForm.getTitle().equals("Basics")) {
Assert.assertTrue(editForm.getTitle() + " is not inherited", editForm.isInherited());
}
Assert.assertTrue("extension " + editForm.getTitle() + " is not displayed",
editForm.isDisplayedWithExplicitWait());
}
}
@Test
public void makeExtensionsDisabledTest() {
for (Iterator<AbstractExtensionEditForm> iterator = extensions.iterator(); iterator.hasNext();) {
AbstractExtensionEditForm editForm = (AbstractExtensionEditForm) iterator.next();
editForm.makeExtensionDisabled();
editForm.isDisplayedWithExplicitWait();
//not checking Basics, Project Members, Info... cannot be disabled
if (!editForm.getTitle().equals("Basics") && !editForm.getTitle().equals("Project Members")
&& !editForm.getTitle().equals("Info")) {
Assert.assertTrue(editForm.getTitle() + " is not disabled", editForm.isDisabled());
}
Assert.assertTrue("extension " + editForm.getTitle() + " is not displayed",
editForm.isDisplayedWithExplicitWait());
}
}
@Test
public void makeExtensionsShownTest() {
for (Iterator<AbstractExtensionEditForm> iterator = extensions.iterator(); iterator.hasNext();) {
AbstractExtensionEditForm editForm = (AbstractExtensionEditForm) iterator.next();
editForm.makeExtensionEditable();
editForm.isDisplayedWithExplicitWait();
Assert.assertTrue(editForm.getTitle() + " is not editable", editForm.isEditable());
editForm.makeExtensionShown();
Assert.assertTrue(editForm.getTitle() + " is not shown", editForm.isShown());
Assert.assertTrue("extension " + editForm.getTitle() + " is not displayed",
editForm.isDisplayedWithExplicitWait());
}
}
}