1 package org.paneris.jammyjoes; 2 3 import net.sourceforge.jwebunit.WebTestCase; 4 5 import org.melati.LogicalDatabase; 6 import org.melati.poem.AccessToken; 7 import org.melati.poem.PoemTask; 8 import org.paneris.jammyjoes.model.JammyjoesDatabase; 9 import org.paneris.jammyjoes.model.ShopOrder; 10 import org.paneris.jammyjoes.model.ShopOrderItem; 11 import org.paneris.jammyjoes.shopping.ShoppingTrolley; 12 13 import com.meterware.httpunit.PostMethodWebRequest; 14 import com.meterware.httpunit.WebRequest; 15 import com.meterware.httpunit.WebResponse; 16 17 public class TestCaseFunctionalShopping extends WebTestCase { 18 19 public void setUp() { 20 getTestContext().setBaseUrl("http://localhost"); 21 } 22 23 public void testEndToEndTelesalesOrder() throws Exception { 24 beginAt("/telesales/toys"); 25 assertTextPresent("Keeping it Real"); 26 submit(); 27 assertTextPresent("Search for Toys"); 28 submit(); 29 assertTextPresent("Login"); 30 setFormElement("field_login","telesales"); 31 setFormElement("field_password","greece"); 32 submit(); 33 assertTextPresent("Transferring you "); 34 clickLinkWithText("here"); 35 assertTextPresent("Step 2 - Check the ordered items"); 36 clickLinkWithText("Proceed to Stage 3"); 37 assertTextPresent("Step 3 - Enter Customer's Details"); 38 setFormElement("trolley_name", "test name"); 39 setFormElement("trolley_email", "test"); 40 setFormElement("trolley_tel", "test"); 41 setFormElement("trolley_deliveryName", "test"); 42 setFormElement("trolley_deliveryaddress", "test"); 43 setFormElement("trolley_town", "test"); 44 setFormElement("trolley_postcode", "test"); 45 setFormElement("trolley_country", "test"); 46 setFormElement("field_zone", "0"); 47 setFormElement("trolley_country", "test"); 48 setFormElement("trolley_message", "test"); 49 setFormElement("field_wrapping", "2"); 50 submit(); 51 assertTextPresent("Step 4 - Confirm The Order"); 52 53 final JammyjoesDatabase database = (JammyjoesDatabase) LogicalDatabase.getDatabase("jammyjoes"); 54 database.inSession(AccessToken.root, new PoemTask() { 55 56 public void run() { 57 ShopOrder order = (ShopOrder)database.getShopOrderTable().selection().nextElement(); 58 assertEquals("test name", order.getName()); 59 String amount = ShoppingTrolley.getValuePence(order.getAmount().doubleValue()); 60 WebRequest request = new PostMethodWebRequest("http://localhost/jammyjoes/Trolley/jammyjoes/Paid?few90kjnr32908908kjfdsa98432kjlfds9009432lk90lk43209"); 61 request.setParameter("amount",amount); 62 request.setParameter("orderref",order.getTroid()+""); 63 try { 64 WebResponse response = getTestContext().getWebClient().sendRequest(request); 65 assertTrue(response.getText().indexOf("Thanks for buying from Jammy Joes") > -1); 66 } catch (Exception e) { 67 throw new RuntimeException(e); 68 } 69 ShopOrderItem item = (ShopOrderItem)order.getItems().nextElement(); 70 assertEquals(database.getStockTransactionTypeTable().getTelephoneSale(),item.getStocktransaction().getType()); 71 } 72 }); 73 74 } 75 76 public void testEndToEndOnlineOrder() throws Exception { 77 beginAt("/"); 78 assertTextPresent("Find toys by using these search"); 79 submit(); 80 assertTextPresent("Search for Toys"); 81 submit(); 82 String url = getTestContext().getWebClient().getCurrentPage().getURL().toString(); 83 String id = url.substring(url.lastIndexOf("/")+1,url.length()); 84 assertTextPresent("Step 1 - Load up Your Shopping Basket"); 85 setFormElement("trolleyitem_"+id+"_quantity", "9999"); 86 submit(); 87 assertTextNotPresent("Proceed to Step 2"); 88 assertTextPresent("not currently have enough stock to fufill your order"); 89 assertTextNotPresent("Your Details"); 90 setFormElement("trolleyitem_"+id+"_quantity", "1"); 91 submit(); 92 clickLinkWithText("Proceed to Step 2"); 93 assertTextPresent("Step 2 - Enter Your Details"); 94 final String randomName = "" + Math.random(); 95 setFormElement("trolley_name", randomName); 96 setFormElement("trolley_email", "test"); 97 setFormElement("trolley_tel", "test"); 98 setFormElement("trolley_deliveryName", "test"); 99 setFormElement("trolley_deliveryaddress", "test"); 100 setFormElement("trolley_town", "test"); 101 setFormElement("trolley_postcode", "test"); 102 setFormElement("trolley_country", "test"); 103 setFormElement("field_zone", "0"); 104 setFormElement("trolley_country", "test"); 105 setFormElement("trolley_message", "test"); 106 setFormElement("field_wrapping", "2"); 107 submit(); 108 assertTextPresent("Step 3 - Confirm Your Order"); 109 110 final JammyjoesDatabase database = (JammyjoesDatabase) LogicalDatabase.getDatabase("jammyjoes"); 111 database.inSession(AccessToken.root, new PoemTask() { 112 113 public void run() { 114 ShopOrder order = (ShopOrder)database.getShopOrderTable().selection().nextElement(); 115 assertEquals(randomName, order.getName()); 116 String amount = ShoppingTrolley.getValuePence(order.getAmount().doubleValue()); 117 WebRequest request = new PostMethodWebRequest("http://localhost/jammyjoes/Trolley/jammyjoes/Paid?few90kjnr32908908kjfdsa98432kjlfds9009432lk90lk43209"); 118 request.setParameter("amount",amount); 119 request.setParameter("orderref",order.getTroid()+""); 120 try { 121 WebResponse response = getTestContext().getWebClient().sendRequest(request); 122 assertTrue(response.getText().indexOf("Thanks for buying from Jammy Joes") > -1); 123 } catch (Exception e) { 124 throw new RuntimeException(e); 125 } 126 ShopOrderItem item = (ShopOrderItem)order.getItems().nextElement(); 127 assertEquals(database.getStockTransactionTypeTable().getInternetSale(),item.getStocktransaction().getType()); 128 beginAt("/"); 129 assertTextPresent("Find toys by using these search options"); 130 submit(); 131 assertTextPresent("Search for Toys"); 132 submit(); 133 assertTextPresent("Step 1 - Load up Your Shopping Basket"); 134 clickLinkWithText("Proceed to Step 2"); 135 assertTextPresent("Step 2 - Enter Your Details"); 136 String newRandomName = "" + Math.random(); 137 setFormElement("trolley_name", randomName); 138 setFormElement("trolley_email", "test2"); 139 setFormElement("trolley_tel", "test2"); 140 setFormElement("trolley_deliveryName", "test2"); 141 setFormElement("trolley_deliveryaddress", "test2"); 142 setFormElement("trolley_town", "test2"); 143 setFormElement("trolley_postcode", "test2"); 144 setFormElement("trolley_country", "test2"); 145 setFormElement("field_zone", "0"); 146 setFormElement("trolley_country", "test2"); 147 setFormElement("trolley_message", "test2"); 148 setFormElement("field_wrapping", "2"); 149 submit(); 150 assertTextPresent("Step 3 - Confirm Your Order"); 151 ShopOrder newOrder = (ShopOrder)database.getShopOrderTable().selection().nextElement(); 152 assertEquals(randomName, newOrder.getName()); 153 assertTrue(newOrder.getTroid().intValue() > order.getTroid().intValue()); 154 } 155 }); 156 157 } 158 159 }