Package org.apache.rave.integrationtests.steps

Source Code of org.apache.rave.integrationtests.steps.PageOperationsSteps

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.apache.rave.integrationtests.steps;

import org.apache.rave.integrationtests.pages.Portal;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
import org.springframework.beans.factory.annotation.Autowired;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsNull.notNullValue;

/**
* Steps for managing page operations (adding pages, changing layout etc)
*/
@Step
public class PageOperationsSteps {

    @Autowired
    Portal portal;


    @When("I click the add page button")
    public void clickAddPage() {
        final WebElement addPageLink = portal.findElement(By.xpath("//li[@id='addPageButton']/a"));
        addPageLink.click();
        final WebElement pageForm = portal.findElement(By.id("pageForm"));
        assertThat(pageForm.isDisplayed(), equalTo(Boolean.TRUE));
    }

    @When("I enter the title \"$value\"")
    public void enterTitle(String value) {
        changeFieldValue("tab_title", value);
    }

    @When("I choose the two column layout")
    public void selectTwoColumnLayout() {
        final Select layouts = new Select(portal.findElement(By.id("pageLayout")));
        layouts.selectByValue("columns_2");
    }

    @When("I add the page")
    public void submitAddPage() {
        final WebElement updateButton = portal.findElement(By.id("pageMenuUpdateButton"));
        updateButton.click();
        sleep(2000L);
    }

    @Then("the new page with title \"$pageTitle\" is selected")
    public void checkNewPage(String pageTitle) {
        final WebElement activePage =
                portal.findElement(By.xpath("//div[@id='pageContent']/nav//li[contains(@class, 'active')]/a"));
        assertThat(activePage, notNullValue());
        assertThat(activePage.getText().trim(), equalTo(pageTitle));
        final WebElement emptyPageBox = portal.getEmptyPageBox();
        assertThat(emptyPageBox.isDisplayed(), equalTo(Boolean.TRUE));
    }

    @When("I delete the current page")
    public void deleteCurrentPage() {
        final WebElement activePage =
                portal.findElement(By.xpath("//div[@id='pageContent']/nav//li[contains(@class, 'active')]/a"));
        activePage.click();
        sleep(2000L);
        final WebElement deletePageLink = portal.findElement(By.xpath("//li[@id='pageMenuDelete']/a"));
        deletePageLink.click();
    }


    private void changeFieldValue(String fieldId, String value) {
        final WebElement field = portal.findElement(By.id(fieldId));
        field.clear();
        field.sendKeys(value);
    }

    private void sleep(long milis) {
        try {
            Thread.sleep(milis);
        } catch (InterruptedException e) {
            throw new RuntimeException("Could not sleep thread", e);
        }
    }

}
TOP

Related Classes of org.apache.rave.integrationtests.steps.PageOperationsSteps

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.