You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2010/02/20 09:38:41 UTC

svn commit: r912091 - in /tuscany/sca-java-2.x/trunk/samples/store: ./ src/main/resources/ src/test/ src/test/java/ src/test/java/client/ src/test/java/store/ src/test/resources/

Author: lresende
Date: Sat Feb 20 08:38:40 2010
New Revision: 912091

URL: http://svn.apache.org/viewvc?rev=912091&view=rev
Log:
TUSCANY-3468 - Providing htmlUnit test to verify implementation widget is working and the catalog ui is being properly populated

Added:
    tuscany/sca-java-2.x/trunk/samples/store/src/test/
    tuscany/sca-java-2.x/trunk/samples/store/src/test/java/
    tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/
    tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java   (with props)
    tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java   (with props)
    tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/
    tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java   (with props)
    tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/
    tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite   (with props)
Modified:
    tuscany/sca-java-2.x/trunk/samples/store/pom.xml
    tuscany/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite

Modified: tuscany/sca-java-2.x/trunk/samples/store/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/store/pom.xml?rev=912091&r1=912090&r2=912091&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/store/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/samples/store/pom.xml Sat Feb 20 08:38:40 2010
@@ -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>

Modified: tuscany/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite?rev=912091&r1=912090&r2=912091&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite (original)
+++ tuscany/sca-java-2.x/trunk/samples/store/src/main/resources/store.composite Sat Feb 20 08:38:40 2010
@@ -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>
     

Added: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java?rev=912091&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java (added)
+++ tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java Sat Feb 20 08:38:40 2010
@@ -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);
+
+}

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/Shopper.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java?rev=912091&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java (added)
+++ tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java Sat Feb 20 08:38:40 2010
@@ -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 "";
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/client/ShopperImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java?rev=912091&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java (added)
+++ tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java Sat Feb 20 08:38:40 2010
@@ -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"));
+
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/java/store/StoreTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite?rev=912091&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite (added)
+++ tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite Sat Feb 20 08:38:40 2010
@@ -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>

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sca-java-2.x/trunk/samples/store/src/test/resources/store-client.composite
------------------------------------------------------------------------------
    svn:mime-type = text/xml