| /* |
| * 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); |
| |
| } |
| } |