1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.oness.order.webapp.controller.action;
17
18 import java.math.BigDecimal;
19 import java.util.ArrayList;
20 import java.util.Calendar;
21 import java.util.List;
22
23 import net.sf.oness.common.model.temporal.Date;
24 import net.sf.oness.common.model.util.CollectionUtils;
25 import net.sf.oness.common.model.util.PaginatedList;
26 import net.sf.oness.common.webapp.controller.action.ActionUtils;
27 import net.sf.oness.common.webapp.controller.testing.JMockStrutsTestCase;
28 import net.sf.oness.order.model.bo.Order;
29 import net.sf.oness.order.model.bo.OrderItem;
30 import net.sf.oness.order.model.facade.OrderFacadeDelegate;
31 import net.sf.oness.order.model.to.OrderWithParty;
32 import net.sf.oness.order.webapp.controller.actionform.MasterActionForm;
33 import net.sf.oness.party.model.party.bo.Person;
34
35 import org.jmock.Mock;
36
37 /***
38 * @author Carlos Sanchez
39 * @version $Revision: 1.9 $
40 */
41 public class OrderActionTest extends JMockStrutsTestCase {
42
43 private Mock mockFacade;
44
45 private Order order;
46
47 private OrderItem orderItem;
48
49 private OrderWithParty orderWithParty;
50
51 /***
52 * @see junit.framework.TestCase#setUp()
53 */
54 protected void setUp() throws Exception {
55 super.setUp();
56 mockFacade = new Mock(OrderFacadeDelegate.class);
57 getMockWebApplicationContext().expects(atLeastOnce()).method("getBean")
58 .with(eq("orderFacadeDelegate")).will(
59 returnValue(mockFacade.proxy()));
60
61 order = new Order();
62 order.setType(new Integer(1));
63 order.setPartyId(new Long(1));
64 order.setDate(new Date(2004, Calendar.JANUARY, 1));
65 order.setItems(CollectionUtils.newList(new OrderItem()));
66
67 orderItem = new OrderItem();
68 orderItem.setPrice(new BigDecimal("10"));
69 orderItem.setProductId(new Long(1));
70 orderItem.setQuantity(new BigDecimal("1"));
71
72 orderWithParty = new OrderWithParty();
73 orderWithParty.setOrder(order);
74 orderWithParty.setParty(new Person());
75 orderWithParty.setItems(CollectionUtils.newList(orderItem));
76 orderWithParty.setAmount(new BigDecimal(0));
77 }
78
79 final public void testCreate() {
80
81 mockFacade.expects(once()).method("createOrder").with(eq(order)).will(
82 returnValue(orderWithParty));
83
84 create("01/01/2004");
85
86 struts().verifyNoActionErrors();
87
88 MasterActionForm form = (MasterActionForm) struts().getActionForm();
89 assertNotNull(form.getDateAsString());
90
91 assertNotNull("request attribute", struts().getRequest().getAttribute(
92 "order"));
93 assertNotNull("request attribute", struts().getRequest().getAttribute(
94 "party"));
95 mockFacade.verify();
96 }
97
98 /*** check with an incorrect date */
99 final public void testCreateWithIncorrectDate() {
100 getMockWebApplicationContext().reset();
101 mockFacade.verify();
102
103 struts().clearRequestParameters();
104
105 create("01/01/");
106
107 struts().verifyActionErrors(new String[] { "errors.invalid" });
108 }
109
110 final private void create(String dateAsString) {
111 Order returned = (Order) order.clone();
112 returned.setId(new Long(1));
113
114 struts().setRequestPathInfo("/order/create");
115 struts().addRequestParameter("dateAsString", dateAsString);
116 struts().addRequestParameter("partyId", order.getPartyId().toString());
117 struts().addRequestParameter("type", "1");
118
119 struts().actionPerform();
120 }
121
122 final public void testUpdate() {
123 order.setId(new Long(1));
124
125 mockFacade.expects(once()).method("updateOrder").with(eq(order),
126 eq(CollectionUtils.newList(orderItem))).will(
127 returnValue(orderWithParty));
128 struts().setRequestPathInfo("/order/update");
129 struts().addRequestParameter("id", order.getId().toString());
130 struts().addRequestParameter("dateAsString", "01/01/2004");
131 struts().addRequestParameter("partyId", order.getPartyId().toString());
132 struts().addRequestParameter("type", "1");
133 struts().addRequestParameter("itemsSize", "1");
134 struts().addRequestParameter("items[0].price", "10");
135 struts().addRequestParameter("items[0].productId", "1");
136 struts().addRequestParameter("items[0].quantity", "1");
137
138 struts().actionPerform();
139 struts().verifyNoActionErrors();
140 struts().verifyForward("success");
141 mockFacade.verify();
142 }
143
144 final public void testFind() throws Exception {
145 Order criteria = new Order();
146 criteria.setPartyId(new Long(1));
147 List list = new ArrayList(5);
148 for (int i = 0; i < 5; i++) {
149 list.add(criteria.clone());
150 }
151
152
153 mockFacade.expects(once()).method("findOrder").with(eq(criteria),
154 eq(0), eq(5)).will(
155 returnValue(new PaginatedList(list, 0, 5, 5)));
156 struts().setRequestPathInfo("/order/find");
157 struts().addRequestParameter("firstElement", "0");
158 struts().addRequestParameter("maxElements", "5");
159 struts().addRequestParameter("partyId",
160 criteria.getPartyId().toString());
161 struts().actionPerform();
162 struts().verifyForward("success");
163 struts().verifyNoActionErrors();
164
165 PaginatedList results = (PaginatedList) struts().getRequest()
166 .getAttribute(ActionUtils.RESULTS_ATTRIBUTE_NAME);
167
168 assertEquals(list.size(), results.size());
169
170 mockFacade.verify();
171 }
172
173 final public void testShow() {
174 order.setId(new Long(1));
175
176
177 mockFacade.expects(once()).method("findOrderWithDetails").with(
178 eq(new Long(1))).will(returnValue(orderWithParty));
179 struts().setRequestPathInfo("/order/show");
180 struts().addRequestParameter("id", "1");
181 struts().actionPerform();
182 struts().verifyForward("success");
183 struts().verifyNoActionErrors();
184
185 assertNotNull("request attribute", struts().getRequest().getAttribute(
186 "order"));
187 assertNotNull("request attribute", struts().getRequest().getAttribute(
188 "amount"));
189 mockFacade.verify();
190 }
191
192 final public void testEdit() {
193 mockFacade.expects(once()).method("findOrderWithDetails").with(
194 eq(new Long(1))).will(returnValue(orderWithParty));
195 struts().setRequestPathInfo("/order/edit");
196 struts().addRequestParameter("id", "1");
197 struts().actionPerform();
198 struts().verifyForward("success");
199 struts().verifyNoActionErrors();
200
201 MasterActionForm form = (MasterActionForm) struts().getActionForm();
202 assertNotNull(form.getDateAsString());
203
204 mockFacade.verify();
205 }
206
207 public void testDelete() {
208 mockFacade.expects(once()).method("deleteOrder").with(eq(new Long(1)));
209 struts().setRequestPathInfo("/order/delete");
210 struts().addRequestParameter("id", "1");
211 struts().actionPerform();
212 struts().verifyForward("success");
213 struts().verifyNoActionErrors();
214 mockFacade.verify();
215 }
216
217 }