/*******************************************************************************
* 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.concurrent.TimeUnit;
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.concrete.ProjectDetailsPage;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.BasicsExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.DevelopmentInfrastructureExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.InfoExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.MavenExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.ProjectMembersExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.RatingsAndReviewExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.RelatedProjectsExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.editform.ScrumExtensionEditForm;
import org.eclipse.skalli.selenium.pageobjects.ext.util.AddUserForm;
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;
import org.openqa.selenium.support.ui.Select;
/**
* Some tests for the create project page
*/
public class CreateProjectPageTest {
private static WebDriver driver;
private static CreateProjectPage createProjectPage;
private static MainPage mainPage;
private static EditPage editPage;
private static ProjectDetailsPage projectDetailsPage;
@BeforeClass
public static void setupClass() {
driver = TestUtilities.initializeDriver();
initializePageObjects();
}
private static void initializePageObjects() {
createProjectPage = PageFactory.initElements(driver, CreateProjectPage.class);
mainPage = PageFactory.initElements(driver, MainPage.class);
editPage = PageFactory.initElements(driver, EditPage.class);
projectDetailsPage = PageFactory.initElements(driver, ProjectDetailsPage.class);
}
@Before
public void setup() {
DriverProvider.navigateToBaseUrl(driver);
mainPage.isDisplayedWithExplicitWait();
//navigate to the create project page
mainPage.clickCreateProjectLink();
createProjectPage.isDisplayedWithExplicitWait();
}
@Test
public void createLightWeightProjectTest() {
createProject();
//fill the required fields
BasicsExtensionEditForm basicsExtensionEditForm = editPage.getBasicsExtensionEditForm();
basicsExtensionEditForm.isDisplayedWithExplicitWait();
String projectId = "new_project";
String displayName = "My new Project";
//check that the project does not exist
DriverProvider.navigateToSubUrl(driver, "/projects/" + projectId);
driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
//project exists
try {
if (projectDetailsPage.isDisplayed()) {
deleteProject(basicsExtensionEditForm);
mainPage.clickCreateProjectLink();
}
} catch (Exception e) {
//project details page not shown -> project does not exist
}
createProject();
basicsExtensionEditForm.sendKeysToProjectIdField(projectId);
basicsExtensionEditForm.sendKeysToDisplayNameField(displayName);
basicsExtensionEditForm.isDisplayedWithExplicitWait();
//create the project
editPage.clickUpperOkButton();
//if the project was created the project details page should be displayed
projectDetailsPage.isDisplayedWithExplicitWait();
deleteProject(basicsExtensionEditForm);
}
private void createProject() {
//make a free style project
createProjectPage.clickFreeStyleProjectButton();
createProjectPage.isDisplayedWithExplicitWait();
//go to the edit form of the project to be created
createProjectPage.clickCreateProjectButton();
editPage.isDisplayedWithExplicitWait();
}
private void deleteProject(BasicsExtensionEditForm basicsExtensionEditForm) {
//delete the project
projectDetailsPage.clickEditLink();
editPage.isDisplayedWithExplicitWait();
basicsExtensionEditForm.checkDeletedCheckBox(true);
basicsExtensionEditForm.isDisplayedWithExplicitWait();
editPage.clickUpperOkButton();
//if it was deleted the main page should be displayed
mainPage.isDisplayedWithExplicitWait();
}
@Test
public void createHeavyWeightProjectTest() {
createProject();
//fill the required fields
BasicsExtensionEditForm basicsExtensionEditForm = editPage.getBasicsExtensionEditForm();
basicsExtensionEditForm.isDisplayedWithExplicitWait();
String projectId = "new_project";
String displayName = "My new Project";
//check that the project does not exist
DriverProvider.navigateToSubUrl(driver, "/projects/" + projectId);
driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
//project exists
try {
if (projectDetailsPage.isDisplayed()) {
deleteProject(basicsExtensionEditForm);
mainPage.clickCreateProjectLink();
}
} catch (Exception e) {
//project details page not shown -> project does not exist
}
createProject();
AddUserForm addUserForm = PageFactory.initElements(driver, AddUserForm.class);
//fill extensions
fillBasicExtension(basicsExtensionEditForm, projectId, displayName);
fillProjectMembersExtension(addUserForm);
fillInfoExtension();
//ignored as setting a value to a comboBox field yields unpredictable results
//fillAdditionalLinksExtension();
fillRatingsAndReviewsExtension();
fillRelatedProjectsExtension();
fillDevelopmentInfrastructureExtension();
fillMavenExtension();
fillScrumExtension(addUserForm);
//create the project
editPage.clickUpperOkButton();
//if the project was created the project details page should be displayed
projectDetailsPage.isDisplayedWithExplicitWait();
deleteProject(basicsExtensionEditForm);
}
public void fillScrumExtension(AddUserForm addUserForm) {
ScrumExtensionEditForm scrumExtensionEditForm = editPage.getScrumExtensionEditForm();
scrumExtensionEditForm.isDisplayedWithExplicitWait();
scrumExtensionEditForm.makeExtensionEditable();
scrumExtensionEditForm.clickScrumMastersAddUserLink();
addUserForm.isDisplayedWithExplicitWait();
addUserForm.sendKeysToSearchForField("j");
addUserForm.submitSearchForContent();
//select entry
addUserForm.getSelect().selectByIndex(0);
addUserForm.clickAddAndCloseButton();
scrumExtensionEditForm.sendKeysToBacklogField("");
}
public void fillMavenExtension() {
MavenExtensionEditForm mavenExtensionEditForm = editPage.getMavenExtensionEditForm();
mavenExtensionEditForm.isDisplayedWithExplicitWait();
mavenExtensionEditForm.makeExtensionEditable();
//mavenExtensionEditForm.sendKeysToReactorPomPathField("");
//mavenExtensionEditForm.sendKeysToMavenSiteField("");
mavenExtensionEditForm.isDisplayedWithExplicitWait();
}
public void fillDevelopmentInfrastructureExtension() {
DevelopmentInfrastructureExtensionEditForm developmentInfrastructureExtensionEditForm = editPage
.getDevelopmentInfrastructureExtensionEditForm();
developmentInfrastructureExtensionEditForm.isDisplayedWithExplicitWait();
developmentInfrastructureExtensionEditForm.makeExtensionEditable();
developmentInfrastructureExtensionEditForm
.sendKeysToSourceCodeField("http://git.eclipse.org/c/skalli/org.eclipse.skalli.git/");
developmentInfrastructureExtensionEditForm.sendKeysToRepositoryField(
"scm:git:git://git.wdf.sap.corp/eclipse/org.eclipse.skalli.git", 0);
developmentInfrastructureExtensionEditForm
.sendKeysToBugTrackerField("https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=Skalli");
developmentInfrastructureExtensionEditForm
.sendKeysToBuildField("https://hudson.eclipse.org/hudson/job/skalli/");
//developmentInfrastructureExtensionEditForm.sendKeysToQualityField("");
//developmentInfrastructureExtensionEditForm.sendKeysToCodeReviewField("");
//developmentInfrastructureExtensionEditForm.sendKeysToJavadocField("", 0);
}
public void fillRelatedProjectsExtension() {
RelatedProjectsExtensionEditForm relatedProjectsExtensionEditForm = editPage
.getRelatedProjectsExtensionEditForm();
relatedProjectsExtensionEditForm.isDisplayedWithExplicitWait();
relatedProjectsExtensionEditForm.makeExtensionEditable();
relatedProjectsExtensionEditForm.isDisplayedWithExplicitWait();
relatedProjectsExtensionEditForm.checkCalculateRelatedProjectCheckBox(false);
relatedProjectsExtensionEditForm.isDisplayedWithExplicitWait();
relatedProjectsExtensionEditForm.clickAddRelatedProjectLink();
relatedProjectsExtensionEditForm.isDisplayedWithExplicitWait();
relatedProjectsExtensionEditForm.sendKeysToRelatedProjectField("test", true, 1);
relatedProjectsExtensionEditForm.isDisplayedWithExplicitWait();
relatedProjectsExtensionEditForm.clickRemoveRelatedProjectLink(0);
relatedProjectsExtensionEditForm.isDisplayedWithExplicitWait();
}
public void fillRatingsAndReviewsExtension() {
RatingsAndReviewExtensionEditForm ratingsAndReviewExtensionEditForm = editPage
.getRatingsAndReviewExtensionEditForm();
ratingsAndReviewExtensionEditForm.isDisplayedWithExplicitWait();
ratingsAndReviewExtensionEditForm.makeExtensionEditable();
//reset rating style field
ratingsAndReviewExtensionEditForm.sendKeysToRatingStyleField(new String(
new char[ratingsAndReviewExtensionEditForm
.getRatingStyleFieldContent().length()]).replace('\0', '\b'), true);
ratingsAndReviewExtensionEditForm.sendKeysToRatingStyleField(" \"Smiley\" Style (5 levels of consent) ", true);
ratingsAndReviewExtensionEditForm.checkAllowAnonymusReviewsCheckBox(true);
}
//ignored as setting a value to a comboBox field yields unpredictable results
/* public void fillAdditionalLinksExtension() {
AdditionalLinksExtensionEditForm additionalLinksExtensionEditForm = editPage
.getAdditionalLinksExtensionEditForm();
additionalLinksExtensionEditForm.isDisplayedWithExplicitWait();
additionalLinksExtensionEditForm.makeExtensionEditable();
additionalLinksExtensionEditForm.clickAddLink();
AddLinkForm addLinkForm = PageFactory.initElements(driver, AddLinkForm.class);
addLinkForm.isDisplayedWithExplicitWait();
addLinkForm.sendKeysToLinkGroupField("test", true);
addLinkForm.sendKeysToPageTitleField("my test link");
addLinkForm.sendKeysToUrlField("http://www.test.org");
addLinkForm.isDisplayedWithExplicitWait();
addLinkForm.clickOkAndCloseButton();
additionalLinksExtensionEditForm.isDisplayedWithExplicitWait();
//verify the link has been added
//(for full verification process see EditPageAdditionalLinksExtensionEditFormTest.additionalLinksEditFormAddLinkTest())
int size = additionalLinksExtensionEditForm.getLinkEntries().size();
Assert.assertTrue("the number of entries is incorrect (2 expected - " + size + " found)", size == 2);
}*/
public void fillInfoExtension() {
InfoExtensionEditForm infoExtensionEditForm = editPage.getInfoExtensionEditForm();
infoExtensionEditForm.isDisplayedWithExplicitWait();
//set project homepage
infoExtensionEditForm.sendKeysToProjectHomepageField("http://www.test.org");
infoExtensionEditForm.isDisplayedWithExplicitWait();
//add a mailing list
infoExtensionEditForm.clickAddMailingListLink();
infoExtensionEditForm.isDisplayedWithExplicitWait();
infoExtensionEditForm.sendKeysToMailingListField("skalli-dev@eclipse.org", 1);
infoExtensionEditForm.isDisplayedWithExplicitWait();
//remove the first empty mailing list
infoExtensionEditForm.clickRemoveMailingListLink(0);
infoExtensionEditForm.isDisplayedWithExplicitWait();
}
public void fillProjectMembersExtension(AddUserForm addUserForm) {
ProjectMembersExtensionEditForm projectMembersExtensionEditForm = editPage.getProjectMembersExtensionEditForm();
projectMembersExtensionEditForm.isDisplayedWithExplicitWait();
//add project lead user
projectMembersExtensionEditForm.clickProjectLeadsAddUserLink();
addUserForm.isDisplayedWithExplicitWait();
addUserForm.sendKeysToSearchForField("j");
addUserForm.submitSearchForContent();
//select entry
Select select = addUserForm.getSelect();
select.selectByIndex(0);
addUserForm.clickAddAndCloseButton();
//add committer user
projectMembersExtensionEditForm.clickCommittersAddUserLink();
addUserForm.isDisplayedWithExplicitWait();
addUserForm.sendKeysToSearchForField("j");
addUserForm.submitSearchForContent();
//select entry
select = addUserForm.getSelect();
select.selectByIndex(0);
addUserForm.clickAddAndCloseButton();
//remove project lead user
projectMembersExtensionEditForm.getProjectLeadUsers().get(0).clickRemoveLink();
}
public void fillBasicExtension(BasicsExtensionEditForm basicsExtensionEditForm, String projectId, String displayName) {
basicsExtensionEditForm.sendKeysToProjectIdField(projectId);
basicsExtensionEditForm.sendKeysToDisplayNameField(displayName);
basicsExtensionEditForm.sendKeysToShortNameField("shortName");
basicsExtensionEditForm.sendKeysToDescriptionAreaField("description\n\nline1\nline2");
//reset selection field
basicsExtensionEditForm.sendKeysToProjectTemplateField(new String(new char[basicsExtensionEditForm
.getProjectTemplateFieldContent().length()]).replace('\0', '\b'), true);
basicsExtensionEditForm.sendKeysToProjectTemplateField("Free-Style Project", true);
//reset selection field
basicsExtensionEditForm.sendKeysToParentProjectField(new String(new char[basicsExtensionEditForm
.getParentProjectFieldContent().length()]).replace('\0', '\b'), true);
basicsExtensionEditForm.sendKeysToParentProjectField("Eclipse <eclipse>", true);
//reset selection field
basicsExtensionEditForm.sendKeysToParentProjectField(new String(new char[basicsExtensionEditForm
.getParentProjectFieldContent().length()]).replace('\0', '\b'), true);
basicsExtensionEditForm.sendKeysToParentProjectField("Proposal", true);
basicsExtensionEditForm.isDisplayedWithExplicitWait();
}
}