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 }