summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/samples/store
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-02-20 08:38:40 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-02-20 08:38:40 +0000
commitda556f44f1b1fe17aa80d38cef206d266c114737 (patch)
tree09c7827b7cd2ab605435413cb5887f91a9ddc945 /sca-java-2.x/trunk/samples/store
parentd8eded9182740e8ece9d24331d5d9a4d4e13ab73 (diff)
TUSCANY-3468 - Providing htmlUnit test to verify implementation widget is working and the catalog ui is being properly populated
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@912091 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/samples/store')
-rw-r--r--sca-java-2.x/trunk/samples/store/pom.xml7
-rw-r--r--sca-java-2.x/trunk/samples/store/src/main/resources/store.composite4
-rw-r--r--sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java29
-rw-r--r--sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java64
-rw-r--r--sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java115
-rw-r--r--sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite38
6 files changed, 255 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/samples/store/pom.xml b/sca-java-2.x/trunk/samples/store/pom.xml
index 4bc88f73a4..38df5f0477 100644
--- a/sca-java-2.x/trunk/samples/store/pom.xml
+++ b/sca-java-2.x/trunk/samples/store/pom.xml
@@ -105,6 +105,13 @@
</dependency>
<dependency>
+ <groupId>htmlunit</groupId>
+ <artifactId>htmlunit</artifactId>
+ <version>1.14</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
diff --git a/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite b/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite
index af9aafea77..9c3b79c508 100644
--- a/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite
+++ b/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite
@@ -36,7 +36,7 @@
<implementation.java class="services.FruitsCatalogImpl"/>
<property name="currencyCode">USD</property>
<service name="Catalog">
- <tuscany:binding.jsonrpc/>
+ <tuscany:binding.jsonrpc uri="/Catalog"/>
</service>
<reference name="currencyConverter" target="CurrencyConverter"/>
</component>
@@ -47,7 +47,7 @@
<tuscany:binding.atom uri="/ShoppingCart/Cart"/>
</service>
<service name="Total">
- <tuscany:binding.jsonrpc/>
+ <tuscany:binding.jsonrpc uri="/ShoppingCart/Total"/>
</service>
</component>
diff --git a/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java b/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java
new file mode 100644
index 0000000000..4e2fa63493
--- /dev/null
+++ b/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java
@@ -0,0 +1,29 @@
+/*
+ * 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 client;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Shopper {
+
+ String shop(String itemName, int quantity);
+
+}
diff --git a/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java b/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java
new file mode 100644
index 0000000000..05b1800d4f
--- /dev/null
+++ b/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java
@@ -0,0 +1,64 @@
+/*
+ * 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 client;
+
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Cart;
+import services.Catalog;
+import services.Item;
+import services.Total;
+
+public class ShopperImpl implements Shopper {
+
+ @Reference
+ public Catalog catalog;
+
+ @Reference
+ public Cart shoppingCart;
+
+ @Reference
+ public Total shoppingTotal;
+
+ public String shop(String itemName, int quantity) {
+
+ Item[] items = catalog.get();
+ for (Item item: items) {
+ if (item.getName().startsWith(itemName)) {
+
+ try {
+ shoppingCart.delete("");
+ } catch (NotFoundException e) {
+ // ignore
+ }
+
+ for (int i = 0; i < quantity; i++) {
+ shoppingCart.post("item" + i, item);
+ }
+
+ return shoppingTotal.getTotal();
+ }
+ }
+
+ return "";
+ }
+
+}
diff --git a/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java b/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java
new file mode 100644
index 0000000000..83636b988a
--- /dev/null
+++ b/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java
@@ -0,0 +1,115 @@
+/*
+ * 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 store;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import client.Shopper;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+
+/**
+ * Test the store-merger.
+ *
+ * @version $Rev$ $Date$
+ */
+public class StoreTestCase {
+ private static Node nodeStore;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ String storeLocation = ContributionLocationHelper.getContributionLocation("store.composite");
+ String storeClientLocation = ContributionLocationHelper.getContributionLocation("store-client.composite");
+
+ nodeStore = NodeFactory.newInstance().createNode(new Contribution("store", storeLocation), new Contribution("storeClient", storeClientLocation));
+ nodeStore.start();
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ nodeStore.stop();
+ }
+
+ @Test
+ @Ignore
+ public void testWaitForInput() {
+ try {
+ System.out.println("press enter to continue)");
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testShop() {
+ Shopper shopper = nodeStore.getService(Shopper.class, "StoreClient");
+
+ String total = shopper.shop("Orange", 5);
+ System.out.println("Total: " + total);
+
+ Assert.assertEquals("$17.75", total);
+
+ }
+
+ @Test
+ public void testStoreWidget() throws FailingHttpStatusCodeException, MalformedURLException, IOException {
+ WebClient browser = new WebClient(BrowserVersion.FIREFOX_2);
+ browser.setRedirectEnabled(true);
+ browser.setThrowExceptionOnScriptError(false);
+
+ HtmlPage page = (HtmlPage) browser.getPage("http://localhost:8080/store/store.html");
+
+ //delay to allow all javascript to be retrieved and loaded
+ try {
+ Thread.sleep(4000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ HtmlForm form = (HtmlForm) page.getFormByName("catalogForm");
+
+
+ HtmlCheckBoxInput catalogItems = (HtmlCheckBoxInput) form.getInputByName("items");
+
+ System.out.println(">>>" + catalogItems.getAttributeValue("value"));
+ Assert.assertEquals("Apple - $2.99", catalogItems.getAttributeValue("value"));
+
+ }
+
+}
diff --git a/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite b/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite
new file mode 100644
index 0000000000..c9abe8e996
--- /dev/null
+++ b/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://store"
+ name="store-client">
+
+ <component name="StoreClient">
+ <implementation.java class="client.ShopperImpl"/>
+ <reference name="catalog">
+ <tuscany:binding.jsonrpc uri="http://localhost:8080/Catalog"/>
+ </reference>
+ <reference name="shoppingCart">
+ <tuscany:binding.atom uri="http://localhost:8080/ShoppingCart/Cart"/>
+ </reference>
+ <reference name="shoppingTotal">
+ <tuscany:binding.jsonrpc uri="http://localhost:8080/ShoppingCart/Total"/>
+ </reference>
+ </component>
+
+</composite>