You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2019/01/03 16:51:39 UTC

[tomee] 04/04: Switching to cucumber

This is an automated email from the ASF dual-hosted git repository.

jgallimore pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 4dca0f8a936d65b27d761ab5ba48f54c790a14fb
Author: Jonathan Gallimore <jo...@jrg.me.uk>
AuthorDate: Thu Jan 3 16:30:52 2019 +0000

    Switching to cucumber
---
 .../src/test/java/org/superbiz/mvc/MvcTest.java    | 102 +++++++++++++++++++++
 1 file changed, 102 insertions(+)

diff --git a/examples/mvc-cxf/src/test/java/org/superbiz/mvc/MvcTest.java b/examples/mvc-cxf/src/test/java/org/superbiz/mvc/MvcTest.java
new file mode 100644
index 0000000..568e763
--- /dev/null
+++ b/examples/mvc-cxf/src/test/java/org/superbiz/mvc/MvcTest.java
@@ -0,0 +1,102 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.superbiz.mvc;
+
+import cucumber.api.CucumberOptions;
+import cucumber.api.java.en.Given;
+import cucumber.api.java.en.Then;
+import cucumber.api.java.en.When;
+import cucumber.runtime.arquillian.ArquillianCucumber;
+import cucumber.runtime.arquillian.api.Features;
+import org.apache.ziplock.maven.Mvn;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.RunAsClient;
+import org.jboss.arquillian.drone.api.annotation.Drone;
+import org.jboss.arquillian.test.api.ArquillianResource;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.runner.RunWith;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.Select;
+
+import java.net.URL;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(ArquillianCucumber.class)
+@Features("org/superbiz/mvc/mvc.feature")
+@CucumberOptions(strict = true)
+@RunAsClient
+public class MvcTest {
+
+    @ArquillianResource
+    private URL base;
+
+    @Drone
+    private WebDriver webDriver;
+
+    @Deployment
+    public static WebArchive createDeployment() {
+
+        final Archive<?> war = Mvn.war();
+        System.out.println(war.toString(true));
+        return (WebArchive) war;
+    }
+
+    @Given("^I navigate to the new user screen$")
+    public void navigateToNewUserScreen() {
+        webDriver.get(this.base.toExternalForm() + "app/home");
+        webDriver.findElement(By.linkText("Peoples")).click();
+        webDriver.findElement(By.linkText("Add Registres")).click();
+    }
+
+    @When("^I submit a new user with name: (.*?) age: (\\d+) country: (.*?) state: (.*?) server: (.*?) description: (.*?)$")
+    public void submitNewUser(final String name, final Integer age, final String country, final String state, final String server, final String description) {
+        webDriver.findElement(By.id("name")).click();
+        webDriver.findElement(By.id("name")).clear();
+        webDriver.findElement(By.id("name")).sendKeys(name);
+        webDriver.findElement(By.id("age")).clear();
+        webDriver.findElement(By.id("age")).sendKeys(age.toString());
+        webDriver.findElement(By.id("state")).clear();
+        webDriver.findElement(By.id("state")).sendKeys(state);
+        webDriver.findElement(By.xpath("//input[@name='server'][@value='" + server + "']")).click();
+        webDriver.findElement(By.id("country")).click();
+        new Select(webDriver.findElement(By.id("country"))).selectByVisibleText(country);
+        webDriver.findElement(By.id("description")).click();
+        webDriver.findElement(By.id("description")).clear();
+        webDriver.findElement(By.id("description")).sendKeys(description);
+        webDriver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Description:'])[1]/following::button[1]")).click();
+    }
+
+    @Then("^The user should be added: (.*?) age: (\\d+) country: (.*?) state: (.*?) server: (.*?) description: (.*?)$")
+    public void userShouldBeAdded(final String name, final Integer age, final String country, final String state, final String server, final String description) {
+        final WebElement element = webDriver.findElement(By.id("success-alert"));
+        assertNotNull(element);
+        assertTrue(element.getText().contains("Joe Bloggs was successfully registered"));
+
+        assertEquals(name, webDriver.findElement(By.xpath("//*[@id=\"tableData\"]/tbody/tr[1]/td[1]")).getText());
+        assertEquals(age.toString(), webDriver.findElement(By.xpath("//*[@id=\"tableData\"]/tbody/tr[1]/td[2]")).getText());
+        assertEquals(country, webDriver.findElement(By.xpath("//*[@id=\"tableData\"]/tbody/tr[1]/td[3]")).getText());
+        assertEquals(state, webDriver.findElement(By.xpath("//*[@id=\"tableData\"]/tbody/tr[1]/td[4]")).getText());
+        assertEquals(server, webDriver.findElement(By.xpath("//*[@id=\"tableData\"]/tbody/tr[1]/td[5]")).getText());
+        assertEquals(description, webDriver.findElement(By.xpath("//*[@id=\"tableData\"]/tbody/tr[1]/td[6]")).getText());
+    }
+}
\ No newline at end of file