blob: 6ec6203fcc6595e345de7ab1cb64d0626497697a [file] [log] [blame]
/*
* Copyright 2013 akquinet tech@spree GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.akquinet.devops.test.ui.view;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.WebDriverWait;
/**
* class representing the repo list view, which you see e.g. right after you
* logged in.
*
* @author saheba
*
*/
public class RepoListView extends GitblitDashboardView {
public RepoListView(WebDriver driver, String baseUrl) {
super(driver, baseUrl);
}
public boolean isEmptyRepo(String fullyQualifiedRepoName) {
String pathToLink = "//a[@href = \"?" + WICKET_HREF_PAGE_PATH
+ ".EmptyRepositoryPage&r=" + fullyQualifiedRepoName + "\"]";
List<WebElement> found = getDriver().findElements(By.xpath(pathToLink));
return found != null && found.size() > 0;
}
private String getEditRepoPath(String fullyQualifiedRepoName) {
return "//a[@href =\"?" + WICKET_HREF_PAGE_PATH
+ ".EditRepositoryPage&r=" + fullyQualifiedRepoName + "\"]";
}
private String getDeleteRepoOnclickIdentifier(
String fullyQualifiedRepoPathAndName) {
return "var conf = confirm('Delete repository \""
+ fullyQualifiedRepoPathAndName
+ "\"?'); if (!conf) return false; ";
}
public boolean navigateToNewRepo(long waitSecToLoad) {
String pathToLink = "//a[@href =\"?" + WICKET_HREF_PAGE_PATH
+ ".EditRepositoryPage\"]";
List<WebElement> found = getDriver().findElements(By.xpath(pathToLink));
if (found == null || found.size() == 0 || found.size() > 1) {
return false;
}
found.get(0).click();
WebDriverWait webDriverWait = new WebDriverWait(getDriver(),
waitSecToLoad);
webDriverWait.until(new Exp.EditRepoViewLoaded());
return true;
}
private boolean checkOrDoEditRepo(String fullyQualifiedRepoName,
boolean doEdit) {
List<WebElement> found = getDriver().findElements(
By.xpath(getEditRepoPath(fullyQualifiedRepoName)));
if (found == null || found.size() == 0 || found.size() > 1) {
return false;
}
if (doEdit) {
found.get(0).click();
}
return true;
}
public boolean navigateToEditRepo(String fullyQualifiedRepoName,
int waitSecToLoad) {
boolean result = checkOrDoEditRepo(fullyQualifiedRepoName, true);
WebDriverWait webDriverWait = new WebDriverWait(getDriver(),
waitSecToLoad);
webDriverWait.until(new Exp.EditRepoViewLoaded());
return result;
}
public boolean isEditableRepo(String fullyQualifiedRepoName) {
return checkOrDoEditRepo(fullyQualifiedRepoName, false);
}
private boolean checkOrDoDeleteRepo(String fullyQualifiedRepoPathAndName,
boolean doDelete) {
List<WebElement> found = getDriver().findElements(
By.partialLinkText("delete"));
String onclickIdentifier = getDeleteRepoOnclickIdentifier(fullyQualifiedRepoPathAndName);
WebElement result = null;
for (WebElement webElement : found) {
if (webElement.getAttribute("onclick") != null
&& webElement.getAttribute("onclick").equals(
onclickIdentifier)) {
result = webElement;
break;
}
}
System.out.println("result ? " + result);
if (result == null) {
return false;
}
if (doDelete) {
System.out.println(".............. DO DELETE .... ");
result.click();
}
return true;
}
public boolean isDeletableRepo(String fullyQualifiedRepoPathAndName) {
return checkOrDoDeleteRepo(fullyQualifiedRepoPathAndName, false);
}
public boolean navigateToDeleteRepo(String fullyQualifiedRepoPathAndName) {
return checkOrDoDeleteRepo(fullyQualifiedRepoPathAndName, true);
}
}