/*******************************************************************************
* 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.logic;
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.ext.editform.BasicsExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.InfoExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.util.RemovableFieldEntry;
import org.eclipse.skalli.selenium.tests.Constants;
import org.eclipse.skalli.selenium.tests.TestUtilities;
import org.eclipse.skalli.selenium.utils.DriverProvider;
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 InheritanceTest {
private static WebDriver driver;
private static CreateProjectPage createProjectPage;
private static EditPage editPage;
@BeforeClass
public static void setupClass() {
driver = TestUtilities.initializeDriver();
initializePageObjects();
}
private static void initializePageObjects() {
createProjectPage = PageFactory.initElements(driver, CreateProjectPage.class);
editPage = PageFactory.initElements(driver, EditPage.class);
}
@Before
public void setup() {
TestUtilities.navigateToExistingProjectsEditPage(driver);
}
@Test
public void inheritInfoTest() {
//get the values
InfoExtensionEditForm infoExtensionEditForm = editPage.getInfoExtensionEditForm();
infoExtensionEditForm.isDisplayedWithExplicitWait();
String projectHomepage = infoExtensionEditForm.getProjectHomepage();
List<String> mailingsListEntries = RemovableFieldEntry.getFieldContentsAsStrings(infoExtensionEditForm
.getMailingsListEntries());
createNewProject();
//inherit
BasicsExtensionEditForm basicsExtensionEditForm = editPage.getBasicsExtensionEditForm();
basicsExtensionEditForm.isDisplayedWithExplicitWait();
basicsExtensionEditForm.sendKeysToParentProjectField(Constants.EXISTING_PARENT_PROJECT, true);
basicsExtensionEditForm.isDisplayedWithExplicitWait();
//inherit info extensions content
infoExtensionEditForm = editPage.getInfoExtensionEditForm();
infoExtensionEditForm.isDisplayedWithExplicitWait();
if (!infoExtensionEditForm.isInherited()) {
infoExtensionEditForm.clickInheritInheritedLink();
infoExtensionEditForm.isDisplayedWithExplicitWait();
}
//get inherited content
String inheritedProjectHomepage = infoExtensionEditForm.getProjectHomepage();
List<String> inheritedMailingsListEntries = RemovableFieldEntry.getFieldContentsAsStrings(infoExtensionEditForm
.getMailingsListEntries());
//check
Assert.assertTrue("project homepage is not inherited (is: " + inheritedProjectHomepage + " should be: "
+ projectHomepage, projectHomepage.equals(inheritedProjectHomepage));
Assert.assertTrue("does not contain the same number of entries",
mailingsListEntries.size() == inheritedMailingsListEntries.size());
for (Iterator<String> iterator = mailingsListEntries.iterator(); iterator.hasNext();) {
String mailingListEntry = (String) iterator.next();
Assert.assertTrue("mailing list (" + mailingListEntry + ") is not inherited",
inheritedMailingsListEntries.contains(mailingListEntry));
}
editPage.clickLowerCancelButton();
}
private void createNewProject() {
DriverProvider.navigateToSubUrl(driver, "/create");
createProjectPage.isDisplayedWithExplicitWait();
createProjectPage.clickCreateProjectButton();
editPage.isDisplayedWithExplicitWait();
}
}