io.spring.initializr.web.project.HomePage.java Source code

Java tutorial

Introduction

Here is the source code for io.spring.initializr.web.project.HomePage.java

Source

/*
 * Copyright 2012-2017 the original author or authors.
 *
 * 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 io.spring.initializr.web.project;

import java.util.Arrays;
import java.util.Objects;
import java.util.stream.Collectors;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.Select;

import static org.assertj.core.api.Assertions.assertThat;

/**
 *
 * @author Stephane Nicoll
 */
class HomePage {

    @FindBy(id = "form")
    private WebElement form;
    private final WebDriver driver;

    public HomePage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }

    public Object value(String id) {
        return getInputValue(form.findElement(By.id(id)));
    }

    private Object getInputValue(WebElement input) {
        Object value = null;
        String type = input.getAttribute("type");
        if ("select".equals(input.getTagName())) {
            Select select = new Select(input);
            if (select.isMultiple()) {
                value = select.getAllSelectedOptions().stream().map(this::getValue).collect(Collectors.toList());
            } else {
                value = getValue(select.getFirstSelectedOption());
            }
        } else if (Arrays.asList("checkbox", "radio").contains(type)) {
            if (input.isSelected()) {
                value = getValue(input);
            } else {
                if (Objects.equals(type, "checkbox")) {
                    value = false;
                }
            }
        } else {
            value = getValue(input);
        }
        return value;
    }

    private String getValue(WebElement input) {
        return input.getAttribute("value");
    }

    public WebElement dependency(String value) {
        for (WebElement element : form.findElements(By.name("style"))) {
            if (value.equals(element.getAttribute("value"))) {
                return element;
            }
        }
        throw new AssertionError("Dependency not found: " + value);
    }

    public void advanced() {
        form.findElement(By.cssSelector(".tofullversion")).findElement(By.tagName("a")).click();
    }

    public void simple() {
        form.findElement(By.cssSelector(".tosimpleversion")).click();
    }

    public void artifactId(String text) {
        form.findElement(By.id("artifactId")).clear();
        form.findElement(By.id("artifactId")).sendKeys(text);
    }

    public void autocomplete(String text) {
        form.findElement(By.id("autocomplete")).sendKeys(text);
    }

    public void bootVersion(String text) {
        form.findElement(By.id("bootVersion")).sendKeys(text);
        form.click();
    }

    public void description(String text) {
        form.findElement(By.id("description")).clear();
        form.findElement(By.id("description")).sendKeys(text);
    }

    public void groupId(String text) {
        form.findElement(By.id("groupId")).clear();
        form.findElement(By.id("groupId")).sendKeys(text);
    }

    public void language(String text) {
        form.findElement(By.id("language")).sendKeys(text);
    }

    public void name(String text) {
        form.findElement(By.id("name")).clear();
        form.findElement(By.id("name")).sendKeys(text);
    }

    public void packaging(String text) {
        form.findElement(By.id("packaging")).sendKeys(text);
    }

    public void packageName(String text) {
        form.findElement(By.id("packageName")).clear();
        form.findElement(By.id("packageName")).sendKeys(text);
    }

    public void type(String text) {
        form.findElement(By.id("type")).sendKeys(text);
    }

    public HomePage submit() {
        String url = driver.getCurrentUrl();
        form.findElement(By.name("generate-project")).click();
        assertThat(driver.getCurrentUrl()).isEqualTo(url);
        return this;
    }

}