de.akquinet.devops.test.ui.view.RepoListView.java Source code

Java tutorial

Introduction

Here is the source code for de.akquinet.devops.test.ui.view.RepoListView.java

Source

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

    }
}