/*
* Copyright 2013 ArcBees Inc.
*
* 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 com.gwtplatform.carstore.cucumber.stepdefs;
import javax.inject.Inject;
import com.gwtplatform.carstore.cucumber.application.manufacturers.ManufacturersEditPage;
import com.gwtplatform.carstore.cucumber.application.manufacturers.ManufacturersPage;
import com.gwtplatform.carstore.cucumber.application.widgets.MessageWidgetPage;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import cucumber.runtime.java.guice.ScenarioScoped;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@ScenarioScoped
public class ManufacturersStepDefs extends StepDefs {
private static final int animationTimeout = 1500;
private final ManufacturersPage manufacturersPage;
private final ManufacturersEditPage manufacturersEditPage;
private final MessageWidgetPage messageWidgetPage;
private int numberOfLines;
@Inject
ManufacturersStepDefs(
ManufacturersPage manufacturersPage,
ManufacturersEditPage manufacturersEditPage,
MessageWidgetPage messageWidgetPage) {
this.manufacturersPage = manufacturersPage;
this.manufacturersEditPage = manufacturersEditPage;
this.messageWidgetPage = messageWidgetPage;
}
@Given("^I click on the create manufacturer button$")
public void I_click_on_create_manufacturer_button() {
numberOfLines = manufacturersPage.getNumberOfLines();
manufacturersPage.clickOnCreate();
sleep(animationTimeout);
}
@When("^I click on the first manufacturer edit button$")
public void I_click_on_first_manufacturer_edit_button() {
manufacturersPage.editFirstManufacturer();
sleep(animationTimeout);
}
@When("^I enter (\\S+) as the car manufacturer$")
public void I_enter_as_manufacturer(String manufacturer) {
manufacturersEditPage.setManufacturer(manufacturer);
}
@When("^I click on the save button$")
public void I_click_on_the_save_button() {
manufacturersEditPage.clickOnSave();
}
@When("^I click on the close button$")
public void I_click_on_the_close_button() {
manufacturersEditPage.clickOnClose();
}
@When("^I delete the first manufacturer$")
public void I_delete_first_car() {
numberOfLines = manufacturersPage.getNumberOfLines();
manufacturersPage.deleteFirstManufacturer();
}
@Then("^I see the manufacturer editor$")
public void I_see_manufacturer_editor() {
assertTrue(manufacturersEditPage.isManufacturerEditorVisible());
}
@Then("^The shown manufacturer should match the edited manufacturer$")
public void The_shown_manufacturer_should_match_the_edited_manufacturer() {
assertEquals(manufacturersEditPage.getManufacturer(), manufacturersPage.getFirstManufacturer());
}
@Then("^The manufacturer table should show (\\S+) as the first manufacturer$")
public void Manufacturer_table_should_show_as_first_manufacturer(String manufacturer) {
assertEquals(manufacturersPage.getFirstManufacturer(), manufacturer);
}
@Then("^The manufacturer table should show (\\S+) as the last manufacturer$")
public void Manufacturer_table_should_show_as_last_manufacturer(String manufacturer) {
assertEquals(manufacturersPage.getLastManufacturer(), manufacturer);
}
@Then("^The first manufacturer gets removed$")
public void First_car_gets_removed() {
assertEquals(numberOfLines - 1, manufacturersPage.getNumberOfLines());
}
@Then("^The number of rows is unchanged$")
public void Number_of_rows_is_unchanged() {
assertEquals(manufacturersPage.getNumberOfLines(), numberOfLines);
}
@Then("^The number of rows is incremented$")
public void Number_of_rows_is_incremented() {
assertTrue(manufacturersPage.getNumberOfLines() > numberOfLines);
}
}