Skip to content

Instantly share code, notes, and snippets.

@jwmach1
Created June 7, 2012 22:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jwmach1/2892113 to your computer and use it in GitHub Desktop.
Save jwmach1/2892113 to your computer and use it in GitHub Desktop.
Sitebricks acceptance test showing a web page with an optional path argument
diff --git a/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/ParameterizedPage.java b/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/ParameterizedPage.java
new file mode 100644
index 0000000..4e9c7d2
--- /dev/null
+++ b/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/ParameterizedPage.java
@@ -0,0 +1,33 @@
+package com.google.sitebricks.example;
+
+import com.google.inject.name.Named;
+import com.google.sitebricks.Show;
+import com.google.sitebricks.http.Get;
+
+@Show("ParameterizedPage.html")
+public class ParameterizedPage {
+
+ private static final String DEFAULT_ARGUMENT = "DEFAULT";
+ private String arg;
+
+ public ParameterizedPage() {
+ arg = DEFAULT_ARGUMENT;
+ }
+
+ @Get
+ public void handleGetRequest(@Named("arg") String arg) {
+ if (arg != null && arg.length() > 0) {
+ this.arg = arg;
+ }
+ System.out.println("arg is " + arg + " in ParameterizedPage");
+ }
+
+ @Get
+ public void handleGetRequestNoArgumentGiven() {
+ arg = "no argument given";
+ }
+
+ public String getArg() {
+ return arg;
+ }
+}
diff --git a/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/SitebricksConfig.java b/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/SitebricksConfig.java
index 570afbd..f6cfcc1 100644
--- a/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/SitebricksConfig.java
+++ b/sitebricks-acceptance-tests/src/main/java/com/google/sitebricks/example/SitebricksConfig.java
@@ -108,6 +108,9 @@ public class SitebricksConfig extends GuiceServletContextListener {
// templating by extension
at("/template").show(DecoratedPage.class);
+
+ at("/parameterizedPage/:arg").show(ParameterizedPage.class);
+ at("/parameterizedPage/").show(ParameterizedPage.class);
embed(HelloWorld.class).as("Hello");
}
diff --git a/sitebricks-acceptance-tests/src/main/resources/ParameterizedPage.html b/sitebricks-acceptance-tests/src/main/resources/ParameterizedPage.html
new file mode 100644
index 0000000..e32dc63
--- /dev/null
+++ b/sitebricks-acceptance-tests/src/main/resources/ParameterizedPage.html
@@ -0,0 +1,7 @@
+<html>
+
+<body>
+<div id="argValue">${arg}</div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/sitebricks-acceptance-tests/src/test/java/com/google/sitebricks/acceptance/ParameterizedPageAcceptanceTest.java b/sitebricks-acceptance-tests/src/test/java/com/google/sitebricks/acceptance/ParameterizedPageAcceptanceTest.java
new file mode 100644
index 0000000..64bc2d9
--- /dev/null
+++ b/sitebricks-acceptance-tests/src/test/java/com/google/sitebricks/acceptance/ParameterizedPageAcceptanceTest.java
@@ -0,0 +1,30 @@
+package com.google.sitebricks.acceptance;
+
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.Test;
+
+import com.google.sitebricks.acceptance.page.ParameterizedPage;
+import com.google.sitebricks.acceptance.util.AcceptanceTest;
+
+/**
+ * @author Dhanji R. Prasanna (dhanji@gmail.com)
+ */
+@Test(suiteName = AcceptanceTest.SUITE)
+public class ParameterizedPageAcceptanceTest {
+
+ public void shouldRenderDynamicTextFromArgument() {
+ WebDriver driver = AcceptanceTest.createWebDriver();
+ ParameterizedPage page = ParameterizedPage.open(driver, "/parameterizedPage/pathargument");
+
+ assert page.hasArgument("pathargument") : "Did not pass path argument into the page and on to the template: " + page.getArgumentValue();
+ }
+
+ public void shouldRenderDefaultArgumentWhenNotGivenOnExtraPathInfo() {
+ WebDriver driver = AcceptanceTest.createWebDriver();
+ ParameterizedPage page = ParameterizedPage.open(driver, "/parameterizedPage");
+
+ assert page.hasArgument("no argument given") : "Did not use the default argument in the page and on to the template, instead: " + page.getArgumentValue();
+ }
+
+
+}
\ No newline at end of file
diff --git a/sitebricks-acceptance-tests/src/test/java/com/google/sitebricks/acceptance/page/ParameterizedPage.java b/sitebricks-acceptance-tests/src/test/java/com/google/sitebricks/acceptance/page/ParameterizedPage.java
new file mode 100644
index 0000000..6587f16
--- /dev/null
+++ b/sitebricks-acceptance-tests/src/test/java/com/google/sitebricks/acceptance/page/ParameterizedPage.java
@@ -0,0 +1,26 @@
+package com.google.sitebricks.acceptance.page;
+
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.PageFactory;
+
+import com.google.sitebricks.acceptance.util.AcceptanceTest;
+
+public class ParameterizedPage {
+
+ private WebElement argValue;
+
+ public static ParameterizedPage open(WebDriver driver, String url) {
+ driver.get(AcceptanceTest.BASE_URL + url);
+ return PageFactory.initElements(driver, ParameterizedPage.class);
+ }
+
+
+ public boolean hasArgument(String argument) {
+ return argValue.getText().equals(argument);
+ }
+
+ public String getArgumentValue() {
+ return argValue.getText();
+ }
+}
\ No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment