[seam-commits] Seam SVN: r14993 - in branches/community/Seam_2_3: seam-integration-tests and 2 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Fri Jul 20 10:21:51 EDT 2012


Author: maschmid
Date: 2012-07-20 10:21:50 -0400 (Fri, 20 Jul 2012)
New Revision: 14993

Added:
   branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/faces/
   branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/faces/PageScopedUIIncludeTest.java
Modified:
   branches/community/Seam_2_3/pom.xml
   branches/community/Seam_2_3/seam-integration-tests/pom.xml
Log:
Add a test for JBSEAM-5002


Modified: branches/community/Seam_2_3/pom.xml
===================================================================
--- branches/community/Seam_2_3/pom.xml	2012-07-20 13:29:40 UTC (rev 14992)
+++ branches/community/Seam_2_3/pom.xml	2012-07-20 14:21:50 UTC (rev 14993)
@@ -45,6 +45,7 @@
 
 		<!-- Version string properties -->
 		<version.arquillian_core>1.0.1.Final</version.arquillian_core>
+		<version.arquillian_drone>1.0.0.Final</version.arquillian_drone>
 		<version.wicket>1.4.14</version.wicket>
 		<version.drools>5.1.1</version.drools>
 		<version.testng>5.14.10</version.testng>
@@ -103,6 +104,13 @@
 				<version>1.7.0</version>
 			</dependency>
 
+			<dependency>
+				<groupId>org.jboss.arquillian.extension</groupId>
+				<artifactId>arquillian-drone-bom</artifactId>
+				<version>${version.arquillian_drone}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
 
 			<!-- You should adjust this in the initcore task in build.xml as well -->
 			<dependency>

Modified: branches/community/Seam_2_3/seam-integration-tests/pom.xml
===================================================================
--- branches/community/Seam_2_3/seam-integration-tests/pom.xml	2012-07-20 13:29:40 UTC (rev 14992)
+++ branches/community/Seam_2_3/seam-integration-tests/pom.xml	2012-07-20 14:21:50 UTC (rev 14993)
@@ -122,8 +122,23 @@
 			<artifactId>arquillian-protocol-servlet</artifactId>
 			<scope>test</scope>
 		</dependency>
-	
+
 		<dependency>
+			<groupId>org.jboss.arquillian.extension</groupId>
+			<artifactId>arquillian-drone-webdriver-depchain</artifactId>
+			<type>pom</type>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- Override for WebDriver -->
+		<dependency>
+			<groupId>commons-lang</groupId>
+			<artifactId>commons-lang</artifactId>
+			<version>2.6</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
 			<groupId>org.jboss.seam</groupId>
 			<artifactId>jboss-seam</artifactId>
 			<type>ejb</type>

Added: branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/faces/PageScopedUIIncludeTest.java
===================================================================
--- branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/faces/PageScopedUIIncludeTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/seam-integration-tests/src/test/java/org/jboss/seam/test/integration/faces/PageScopedUIIncludeTest.java	2012-07-20 14:21:50 UTC (rev 14993)
@@ -0,0 +1,169 @@
+package org.jboss.seam.test.integration.faces;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.Serializable;
+import java.net.URL;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.OverProtocol;
+import org.jboss.arquillian.container.test.api.RunAsClient;
+import org.jboss.arquillian.drone.api.annotation.Drone;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.test.integration.Deployments;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+
+// JBSEAM-5002
+ at RunWith(Arquillian.class)
+ at RunAsClient
+public class PageScopedUIIncludeTest
+{
+   @Drone
+   WebDriver driver;
+   
+   @ArquillianResource
+   URL contextPath;
+   
+   @Deployment(name="PageScopedUIIncludeTest")
+   @OverProtocol("Servlet 3.0") 
+   public static Archive<?> createDeployment()
+   {
+      // This is a client test, use a real (non-mocked) Seam deployment
+      return Deployments.realSeamDeployment()
+            .addClasses(Component.class, Component1.class, Component2.class)
+            .addAsWebResource(new StringAsset(
+                  "<html xmlns=\"http://www.w3.org/1999/xhtml\"" +
+                  " xmlns:h=\"http://java.sun.com/jsf/html\"" +
+                  " xmlns:f=\"http://java.sun.com/jsf/core\"" +
+                  " xmlns:ui=\"http://java.sun.com/jsf/facelets\">" +
+                  "<h:head></h:head>" +
+                  "<h:body>" +
+                     "<h:form id='controller'>" +
+                        "<h:commandButton id='component1' action='#{viewController.component1}' value='Component 1' />" +
+                        "<h:commandButton id='component2' action='#{viewController.component2}' value='Component 2' />" +
+                     "</h:form>" +
+                     "<ui:include src='#{viewController.viewId}'/>" +
+                  "</h:body>" + 
+                  "</html>"), "test.xhtml")
+            .addAsWebResource(createComponentXhtmlAsset(1), "component1.xhtml")
+            .addAsWebResource(createComponentXhtmlAsset(2), "component2.xhtml");
+   }
+   
+   private static Asset createComponentXhtmlAsset(int i)
+   {
+      return new StringAsset("<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"" +
+            " xmlns:ui=\"http://java.sun.com/jsf/facelets\"" +
+            " xmlns:h=\"http://java.sun.com/jsf/html\">" +
+            "<h3>Component " + i + "</h3>" +
+            "<h:form id='form" + i + "'>" +
+               "<h:inputText id='input' value='#{component" + i + ".input}' />" +
+               "<h:commandButton id='save' value='Save' action='#{component" + i + ".save}' />" +
+               "<h:outputText value='#{component" + i + ".output}' />" + 
+            "</h:form>" +
+            "</ui:composition>"); // Yay for Java String syntax!
+   }
+   
+   @Test
+   public void testComponent1()
+   {
+      driver.navigate().to(contextPath + "test.seam");
+      assertTrue(driver.getPageSource().contains("Component 1"));
+      driver.findElement(By.id("form1:input")).clear();
+      driver.findElement(By.id("form1:input")).sendKeys("xyzzy");
+      driver.findElement(By.id("form1:save")).click();
+      assertTrue(driver.getPageSource().contains("Hello, xyzzy"));
+   }
+   
+   @Test
+   public void testComponent2()
+   {
+      driver.navigate().to(contextPath + "test.seam");
+      assertTrue(driver.getPageSource().contains("Component 1"));
+      driver.findElement(By.id("controller:component2")).click();
+      assertTrue(driver.getPageSource().contains("Component 2"));
+      driver.findElement(By.id("form2:input")).clear();
+      driver.findElement(By.id("form2:input")).sendKeys("foobar");
+      driver.findElement(By.id("form2:save")).click();
+      assertTrue(driver.getPageSource().contains("Hi, foobar"));
+   }
+   
+   public abstract static class Component
+   {
+      protected String input;
+      protected String output;
+
+      public String getInput()
+      {
+         return input;
+      }
+
+      public void setInput(String input)
+      {
+         this.input = input;
+      }
+      
+      public String getOutput()
+      {
+         return output;
+      }
+      
+      abstract public void save();
+   }
+   
+   @Scope(ScopeType.CONVERSATION)
+   @Name("component1")
+   public static class Component1 extends Component
+   {
+      public void save()
+      {
+         output = "Hello, " + input;
+      }
+   }
+   
+   @Scope(ScopeType.CONVERSATION)
+   @Name("component2")
+   public static class Component2 extends Component
+   {
+      public void save()
+      {
+         output = "Hi, " + input;
+      }
+   }
+   
+   @Scope(ScopeType.PAGE)
+   @Name("viewController")
+   public static class ViewController implements Serializable
+   {
+      private String viewId = "/component1.xhtml";
+      
+      public void setViewId(String viewId)
+      {
+         this.viewId = viewId;
+      }
+      
+      public String getViewId()
+      {
+         return viewId;
+      }
+      
+      public void component1()
+      {
+         setViewId("/component1.xhtml");
+      }
+      
+      public void component2()
+      {
+         setViewId("/component2.xhtml");
+      }
+   }
+}



More information about the seam-commits mailing list