001 /**
002 * Copyright 2005-2011 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.kew.actionlist;
017
018 import org.junit.Test;
019 import org.kuali.rice.core.api.delegation.DelegationType;
020 import org.kuali.rice.kew.actionitem.ActionItem;
021 import org.kuali.rice.kew.actionlist.service.ActionListService;
022 import org.kuali.rice.kew.actionrequest.Recipient;
023 import org.kuali.rice.kew.api.KewApiConstants;
024 import org.kuali.rice.kew.api.WorkflowDocument;
025 import org.kuali.rice.kew.api.WorkflowDocumentFactory;
026 import org.kuali.rice.kew.routeheader.DocumentRouteHeaderValue;
027 import org.kuali.rice.kew.routeheader.service.RouteHeaderService;
028 import org.kuali.rice.kew.service.KEWServiceLocator;
029 import org.kuali.rice.kew.test.KEWTestCase;
030 import org.kuali.rice.kew.test.TestUtilities;
031 import org.kuali.rice.kew.util.WebFriendlyRecipient;
032 import org.kuali.rice.kim.api.KimConstants;
033 import org.kuali.rice.kim.api.group.Group;
034 import org.kuali.rice.kim.api.identity.Person;
035 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
036 import org.springframework.jdbc.core.StatementCallback;
037 import org.springframework.transaction.TransactionStatus;
038 import org.springframework.transaction.support.TransactionCallback;
039 import org.springframework.transaction.support.TransactionTemplate;
040
041 import java.sql.Connection;
042 import java.sql.PreparedStatement;
043 import java.sql.ResultSet;
044 import java.sql.Statement;
045 import java.sql.Timestamp;
046 import java.util.ArrayList;
047 import java.util.Collection;
048 import java.util.Date;
049 import java.util.Iterator;
050 import java.util.List;
051
052 import static org.junit.Assert.*;
053
054 /**
055 * @author Kuali Rice Team (rice.collab@kuali.org)
056 */
057 public class ActionListTest extends KEWTestCase {
058
059 private static final String[] AUTHENTICATION_IDS = { "ewestfal", "rkirkend", "jhopf", "bmcgough" };
060 private static final String[] WORKGROUP_IDS = { "1", "2", "3", "4" };
061
062 private DocumentRouteHeaderValue routeHeader1;
063 private DocumentRouteHeaderValue routeHeader2;
064 private DocumentRouteHeaderValue routeHeader3;
065 private List<ActionItem> actionItems = new ArrayList<ActionItem>();
066
067 protected void loadTestData() throws Exception {
068 loadXmlFile("ActionListConfig.xml");
069 }
070
071 private void setUpOldSchool() throws Exception {
072 super.setUpAfterDataLoad();
073 List<ActionItem> actionItems1 = new ArrayList<ActionItem>();
074 List<ActionItem> actionItems2 = new ArrayList<ActionItem>();
075 List<ActionItem> actionItems3 = new ArrayList<ActionItem>();
076 routeHeader1 = generateDocRouteHeader();
077 routeHeader2 = generateDocRouteHeader();
078 routeHeader3 = generateDocRouteHeader();
079
080 getRouteHeaderService().saveRouteHeader(routeHeader1);
081 getRouteHeaderService().saveRouteHeader(routeHeader2);
082 getRouteHeaderService().saveRouteHeader(routeHeader3);
083
084 for (int i = 0; i < AUTHENTICATION_IDS.length; i++) {
085 actionItems1.add(generateActionItem(routeHeader1, "K", AUTHENTICATION_IDS[i], null));
086 actionItems2.add(generateActionItem(routeHeader2, "A", AUTHENTICATION_IDS[i], null));
087 }
088 for (int i = 0; i < WORKGROUP_IDS.length; i++) {
089 actionItems3.add(generateActionItem(routeHeader3, "A", AUTHENTICATION_IDS[i], WORKGROUP_IDS[i]));
090 }
091
092 actionItems.addAll(actionItems1);
093 actionItems.addAll(actionItems2);
094 actionItems.addAll(actionItems3);
095 for (Iterator<ActionItem> iterator = actionItems.iterator(); iterator.hasNext();) {
096 ActionItem actionItem = iterator.next();
097 getActionListService().saveActionItem(actionItem);
098 }
099 }
100
101 @Test public void testRouteHeaderDelete() throws Exception {
102 setUpOldSchool();
103 Collection<ActionItem> actionItems = getActionListService().findByDocumentId(routeHeader1.getDocumentId());
104 assertEquals("Route header " + routeHeader1.getDocumentId() + " should have action items.", AUTHENTICATION_IDS.length, actionItems.size());
105 getActionListService().deleteByDocumentId(routeHeader1.getDocumentId());
106 actionItems = getActionListService().findByDocumentId(routeHeader1.getDocumentId());
107 assertEquals("There should be no remaining action items for route header " + routeHeader1.getDocumentId(), 0, actionItems.size());
108 actionItems = getActionListService().findByDocumentId(routeHeader2.getDocumentId());
109 assertEquals("Route header " + routeHeader2.getDocumentId() + " should have action items.", AUTHENTICATION_IDS.length, actionItems.size());
110 }
111
112 @Test public void testActionListCount() throws Exception {
113 setUpOldSchool();
114 TransactionTemplate transactionTemplate = getTransactionTemplate();
115 transactionTemplate.execute(new TransactionCallback() {
116 public Object doInTransaction(TransactionStatus status) {
117 return TestUtilities.getJdbcTemplate().execute(new StatementCallback() {
118 public Object doInStatement(Statement stmt) {
119 try {
120 Connection conn = stmt.getConnection();
121 PreparedStatement ps = conn.prepareStatement("select distinct PRNCPL_ID from krew_actn_itm_t");
122 ResultSet rs = ps.executeQuery();
123 int emplIdCnt = 0;
124 int loopCnt = 0;
125 //do first 5 for time sake
126 while (rs.next() && ++loopCnt < 6) {
127 String workflowId = rs.getString(1);
128 PreparedStatement ps1 = conn.prepareStatement("select count(*) from krew_actn_itm_t where PRNCPL_ID = ?");
129 ps1.setString(1, workflowId);
130 ResultSet rsWorkflowIdCnt = ps1.executeQuery();
131 if (rsWorkflowIdCnt.next()) {
132 emplIdCnt = rsWorkflowIdCnt.getInt(1);
133 } else {
134 throw new Exception("WorkflowId " + workflowId + " didn't return a count. Test SQL invalid.");
135 }
136 Collection<ActionItem> actionList = getActionListService().findByPrincipalId(workflowId);
137 assertEquals("ActionItemService returned incorrect number of ActionItems for user " + workflowId + " ActionList", emplIdCnt, actionList.size());
138 ps1.close();
139 rsWorkflowIdCnt.close();
140 }
141 rs.close();
142 ps.close();
143 } catch (Exception e) {
144 throw new RuntimeException(e);
145 }
146 return null;
147 }
148 });
149 }
150 });
151 }
152
153 /**
154 * Tests that the user's secondary action list works appropriately. Also checks that if a user
155 * is their own secondary delegate, their request shows up in their main action list rather than
156 * their secondary list.
157 */
158 @Test public void testSecondaryActionList() throws Exception {
159 WorkflowDocument document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType");
160 document.route("");
161
162 // at this point the document should be routed to the following people
163 // 1) approve to bmcgough with primary delegate of rkirkend and secondary delegates of ewestfal and bmcgough (himself)
164 // 2) approve to jitrue with a secondary delegate of jitrue (himself)
165 // 3) acknowledge to user1
166 // 4) approve to NonSIT workgroup (which should include user1)
167
168 // now lets verify that everyone's action lists look correct
169
170 String bmcgoughPrincipalId = getPrincipalIdForName("bmcgough");
171 String rkirkendPrincipalId = getPrincipalIdForName("rkirkend");
172 String ewestfalPrincipalId = getPrincipalIdForName("ewestfal");
173 String jitruePrincipalId = getPrincipalIdForName("jitrue");
174 String user1PrincipalId = getPrincipalIdForName("user1");
175
176 Group NonSIT = KimApiServiceLocator.getGroupService().getGroupByNamespaceCodeAndName(
177 KimConstants.KIM_GROUP_WORKFLOW_NAMESPACE_CODE, "NonSIT");
178
179 ActionListFilter noFilter = new ActionListFilter();
180 ActionListFilter excludeSecondaryFilter = new ActionListFilter();
181 excludeSecondaryFilter.setDelegationType(DelegationType.SECONDARY.getCode());
182 excludeSecondaryFilter.setExcludeDelegationType(true);
183 ActionListFilter secondaryFilter = new ActionListFilter();
184 secondaryFilter.setDelegationType(DelegationType.SECONDARY.getCode());
185 Collection<ActionItem> actionItems = null;
186 ActionItem actionItem = null;
187
188 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, excludeSecondaryFilter);
189 assertEquals("bmcgough should have 0 items in his primary action list.", 0, actionItems.size());
190 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, secondaryFilter);
191 assertEquals("bmcgough should have 1 item in his secondary action list.", 1, actionItems.size());
192 actionItem = actionItems.iterator().next();
193 assertEquals("Should be an approve request.", KewApiConstants.ACTION_REQUEST_APPROVE_REQ, actionItem.getActionRequestCd());
194 assertEquals("Should be a secondary delegation request.", DelegationType.SECONDARY, actionItem.getDelegationType());
195 actionItem = actionItems.iterator().next();
196 assertEquals("Should be an approve request.", KewApiConstants.ACTION_REQUEST_APPROVE_REQ, actionItem.getActionRequestCd());
197 assertEquals("Should be a secondary delegation request.", DelegationType.SECONDARY, actionItem.getDelegationType());
198 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, noFilter);
199 assertEquals("bmcgough should have 1 item in his entire action list.", 1, actionItems.size());
200
201 actionItems = getActionListService().getActionList(rkirkendPrincipalId, excludeSecondaryFilter);
202 assertEquals("bmcgough should have 1 item in his primary action list.", 1, actionItems.size());
203
204 actionItems = getActionListService().getActionList(jitruePrincipalId, excludeSecondaryFilter);
205 assertEquals("jitrue should have 1 item in his primary action list.", 1, actionItems.size());
206
207 actionItems = getActionListService().getActionList(ewestfalPrincipalId, secondaryFilter);
208 assertEquals("ewestfal should have 1 item in his secondary action list.", 1, actionItems.size());
209
210 // check that user1's approve comes out as their action item from the action list
211 actionItems = getActionListService().getActionList(user1PrincipalId, noFilter);
212 assertEquals("user1 should have 1 item in his primary action list.", 1, actionItems.size());
213 actionItem = actionItems.iterator().next();
214 assertEquals("Should be an approve request.", KewApiConstants.ACTION_REQUEST_APPROVE_REQ, actionItem.getActionRequestCd());
215 assertEquals("Should be to a workgroup.", NonSIT.getId(), actionItem.getGroupId());
216 // check that user1 acknowledge shows up when filtering
217 ActionListFilter ackFilter = new ActionListFilter();
218 ackFilter.setActionRequestCd(KewApiConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ);
219 actionItems = getActionListService().getActionList(user1PrincipalId, ackFilter);
220 assertEquals("user1 should have 1 item in his primary action list.", 1, actionItems.size());
221 actionItem = (ActionItem)actionItems.iterator().next();
222 assertEquals("Should be an acknowledge request.", KewApiConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ, actionItem.getActionRequestCd());
223 assertNull("Should not be to a workgroup.", actionItem.getGroupId());
224
225 // all members of NonSIT should have a single primary Approve Request
226 List<String> memberPrincipalIds = KimApiServiceLocator.getGroupService().getMemberPrincipalIds(NonSIT.getId());
227 for (String memberPrincipalId : memberPrincipalIds)
228 {
229 //will want to convert to Kim Principal
230 actionItems = getActionListService().getActionList(memberPrincipalId, excludeSecondaryFilter);
231 assertEquals("Workgroup Member " + memberPrincipalId + " should have 1 action item.", 1, actionItems.size());
232 actionItem = (ActionItem) actionItems.iterator().next();
233 assertEquals("Should be an approve request.", KewApiConstants.ACTION_REQUEST_APPROVE_REQ, actionItem.getActionRequestCd());
234 assertEquals("Should be to a workgroup.", NonSIT.getId(), actionItem.getGroupId());
235 }
236
237 document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType_PrimaryDelegate");
238 document.route("");
239 document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType_PrimaryDelegate2");
240 document.route("");
241
242 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, excludeSecondaryFilter);
243 assertEquals("bmcgough should have 0 items in his primary action list.", 0, actionItems.size());
244 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, secondaryFilter);
245 assertEquals("bmcgough should have 1 item in his secondary action list.", 3, actionItems.size());
246 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, new ActionListFilter());
247 assertEquals("bmcgough should have 1 item in his entire action list.", 3, actionItems.size());
248
249 ActionListFilter filter = null;
250 // test a standard filter with no delegations
251 filter = new ActionListFilter();
252 filter.setDelegatorId(KewApiConstants.DELEGATION_DEFAULT);
253 filter.setPrimaryDelegateId(KewApiConstants.PRIMARY_DELEGATION_DEFAULT);
254 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
255 assertEquals("bmcgough should have 0 items in his entire action list.", 0, actionItems.size());
256
257 // test secondary delegation with all selected returns all
258 filter = new ActionListFilter();
259 filter.setDelegationType(DelegationType.SECONDARY.getCode());
260 filter.setDelegatorId(KewApiConstants.ALL_CODE);
261 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
262 assertEquals("bmcgough has incorrect action list item count.", 3, actionItems.size());
263
264 // test that primary delegation with none selected returns none
265 filter = new ActionListFilter();
266 filter.setDelegationType(DelegationType.SECONDARY.getCode());
267 filter.setDelegatorId(KewApiConstants.DELEGATION_DEFAULT);
268 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
269 assertEquals("bmcgough has incorrect action list item count.", 0, actionItems.size());
270
271 // test that primary delegation with single user ids works corectly
272 filter = new ActionListFilter();
273 filter.setDelegationType(DelegationType.SECONDARY.getCode());
274 filter.setDelegatorId(bmcgoughPrincipalId);
275 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
276 assertEquals("bmcgough has incorrect action list item count.", 3, actionItems.size());
277 filter = new ActionListFilter();
278 filter.setDelegationType(DelegationType.SECONDARY.getCode());
279 filter.setDelegatorId(bmcgoughPrincipalId);
280 actionItems = getActionListService().getActionList(ewestfalPrincipalId, filter);
281 assertEquals("ewestfal has incorrect action list item count.", 3, actionItems.size());
282 filter = new ActionListFilter();
283 filter.setDelegationType(DelegationType.SECONDARY.getCode());
284 filter.setDelegatorId(jitruePrincipalId);
285 actionItems = getActionListService().getActionList(jitruePrincipalId, filter);
286 assertEquals("jitrue has incorrect action list item count.", 3, actionItems.size());
287 }
288
289 /**
290 * Tests that the user's secondary action list works appropriately. Also checks that if a user
291 * is their own secondary delegate, their request shows up in their main action list rather than
292 * their secondary list.
293 */
294 @Test public void testPrimaryDelegationActionList() throws Exception {
295 WorkflowDocument document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType");
296 document.route("");
297
298 // at this point the document should be routed to the following people
299 // 1) approve to bmcgough with primary delegate of rkirkend and secondary delegates of ewestfal and bmcgough (himself)
300 // 2) approve to jitrue with a secondary delegate of jitrue (himself)
301 // 3) acknowledge to user1
302 // 4) approve to NonSIT workgroup (which should include user1)
303
304 // now lets verify that everyone's action lists look correct
305
306 String bmcgoughPrincipalId = getPrincipalIdForName("bmcgough");
307 String rkirkendPrincipalId = getPrincipalIdForName("rkirkend");
308 String delyeaPrincipalId = getPrincipalIdForName("delyea");
309 String temayPrincipalId = getPrincipalIdForName("temay");
310 String jhopfPrincipalId = getPrincipalIdForName("jhopf");
311
312 ActionListFilter showPrimaryFilter = new ActionListFilter();
313 showPrimaryFilter.setDelegationType(DelegationType.PRIMARY.getCode());
314 Collection<ActionItem> actionItems = null;
315 ActionItem actionItem = null;
316
317 // make sure showing primary delegations show primary delegated action items
318 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, showPrimaryFilter);
319 assertEquals("bmcgough should have 1 item in his primary delegation action list.", 1, actionItems.size());
320 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, new ActionListFilter());
321 assertEquals("bmcgough should have 1 item in his entire action list.", 1, actionItems.size());
322
323 document = WorkflowDocumentFactory.createDocument(jhopfPrincipalId, "ActionListDocumentType_PrimaryDelegate");
324 document.route("");
325 document = WorkflowDocumentFactory.createDocument(jhopfPrincipalId, "ActionListDocumentType_PrimaryDelegate2");
326 document.route("");
327
328 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, showPrimaryFilter);
329 // should be 6 total action items but 3 distinct doc ids
330 assertEquals("bmcgough should have 1 item in his primary delegation action list.", 3, actionItems.size());
331
332 ActionListFilter filter = null;
333
334 // test a standard filter with no delegations
335 filter = new ActionListFilter();
336 filter.setDelegatorId(KewApiConstants.DELEGATION_DEFAULT);
337 filter.setPrimaryDelegateId(KewApiConstants.PRIMARY_DELEGATION_DEFAULT);
338 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
339 assertEquals("bmcgough should have 0 items in his entire action list.", 0, actionItems.size());
340
341 // test primary delegation with all selected returns all
342 filter = new ActionListFilter();
343 filter.setDelegationType(DelegationType.PRIMARY.getCode());
344 filter.setPrimaryDelegateId(KewApiConstants.ALL_CODE);
345 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
346 assertEquals("bmcgough should have 1 item in his entire action list.", 3, actionItems.size());
347
348 // test that primary delegation with none selected returns none
349 filter = new ActionListFilter();
350 filter.setDelegationType(DelegationType.PRIMARY.getCode());
351 filter.setPrimaryDelegateId(KewApiConstants.PRIMARY_DELEGATION_DEFAULT);
352 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
353 assertEquals("bmcgough should have 1 item in his entire action list.", 0, actionItems.size());
354
355 // test that primary delegation with single user ids works corectly
356 filter = new ActionListFilter();
357 filter.setDelegationType(DelegationType.PRIMARY.getCode());
358 filter.setPrimaryDelegateId(rkirkendPrincipalId);
359 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
360 assertEquals("bmcgough should have 3 items in his entire action list.", 3, actionItems.size());
361 filter = new ActionListFilter();
362 filter.setDelegationType(DelegationType.PRIMARY.getCode());
363 filter.setPrimaryDelegateId(delyeaPrincipalId);
364 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
365 assertEquals("bmcgough should have 2 items in his entire action list.", 2, actionItems.size());
366 filter = new ActionListFilter();
367 filter.setDelegationType(DelegationType.PRIMARY.getCode());
368 filter.setPrimaryDelegateId(temayPrincipalId);
369 actionItems = getActionListService().getActionList(bmcgoughPrincipalId, filter);
370 assertEquals("bmcgough should have 1 item in his entire action list.", 1, actionItems.size());
371
372 }
373
374 /**
375 * Tests that the retrieval of primary and secondary delegation users is working correctly
376 */
377 @Test public void testGettingDelegationUsers() throws Exception {
378
379 Person jhopf = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("jhopf");
380 Person bmcgough = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("bmcgough");
381 WorkflowDocument document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType");
382 document.route("");
383 document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType_PrimaryDelegate");
384 document.route("");
385 document = WorkflowDocumentFactory.createDocument(getPrincipalIdForName("jhopf"), "ActionListDocumentType_PrimaryDelegate2");
386 document.route("");
387
388 Collection<Recipient> recipients = getActionListService().findUserPrimaryDelegations(jhopf.getPrincipalId());
389 assertEquals("Wrong size of users who were delegated to via Primary Delegation", 0, recipients.size());
390 recipients = getActionListService().findUserPrimaryDelegations(bmcgough.getPrincipalId());
391 assertEquals("Wrong size of users who were delegated to via Primary Delegation", 3, recipients.size());
392 String user1 = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("rkirkend").getPrincipalId();
393 String user2 = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("temay").getPrincipalId();
394 String user3 = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("delyea").getPrincipalId();
395
396 boolean foundUser1 = false;
397 boolean foundUser2 = false;
398 boolean foundUser3 = false;
399 for (Recipient recipient : recipients) {
400 if (user1.equals(((WebFriendlyRecipient)recipient).getRecipientId())) {
401 foundUser1 = true;
402 } else if (user2.equals(((WebFriendlyRecipient)recipient).getRecipientId())) {
403 foundUser2 = true;
404 } else if (user3.equals(((WebFriendlyRecipient)recipient).getRecipientId())) {
405 foundUser3 = true;
406 } else {
407 fail("Found invalid recipient in list with display name '" + ((WebFriendlyRecipient)recipient).getDisplayName() + "'");
408 }
409 }
410 assertTrue("Should have found user " + user1, foundUser1);
411 assertTrue("Should have found user " + user2, foundUser2);
412 assertTrue("Should have found user " + user3, foundUser3);
413
414 recipients = getActionListService().findUserSecondaryDelegators(bmcgough.getPrincipalId());
415 assertEquals("Wrong size of users who were have delegated to given user via Secondary Delegation", 1, recipients.size());
416 WebFriendlyRecipient recipient = (WebFriendlyRecipient)recipients.iterator().next();
417 assertEquals("Wrong employee id of primary delegate", "bmcgough", getPrincipalNameForId(recipient.getRecipientId()));
418 }
419
420 private DocumentRouteHeaderValue generateDocRouteHeader() {
421 DocumentRouteHeaderValue routeHeader = new DocumentRouteHeaderValue();
422 routeHeader.setAppDocId("Test");
423 routeHeader.setApprovedDate(null);
424 routeHeader.setCreateDate(new Timestamp(new Date().getTime()));
425 routeHeader.setDocContent("test");
426 routeHeader.setDocRouteLevel(1);
427 routeHeader.setDocRouteStatus(KewApiConstants.ROUTE_HEADER_ENROUTE_CD);
428 routeHeader.setDocTitle("Test");
429 routeHeader.setDocumentTypeId("1");
430 routeHeader.setDocVersion(KewApiConstants.DocumentContentVersions.CURRENT);
431 routeHeader.setRouteStatusDate(new Timestamp(new Date().getTime()));
432 routeHeader.setDateModified(new Timestamp(new Date().getTime()));
433 routeHeader.setInitiatorWorkflowId("someone");
434 return routeHeader;
435 }
436
437 private ActionItem generateActionItem(DocumentRouteHeaderValue routeHeader, String actionRequested, String authenticationId, String groupId) {
438 ActionItem actionItem = new ActionItem();
439 actionItem.setActionRequestCd(actionRequested);
440 actionItem.setActionRequestId("1");
441 actionItem.setPrincipalId(getPrincipalIdForName(authenticationId));
442 actionItem.setDocumentId(routeHeader.getDocumentId());
443 actionItem.setDateAssigned(new Timestamp(new Date().getTime()));
444 actionItem.setDocHandlerURL("Unit testing");
445 actionItem.setDocLabel("unit testing");
446 actionItem.setDocTitle(routeHeader.getDocTitle());
447 actionItem.setDocName("docname");
448 actionItem.setGroupId(groupId);
449 // actionItem.setResponsibilityId(new Long(-1));
450 return actionItem;
451 }
452
453 private ActionListService getActionListService() {
454 return KEWServiceLocator.getActionListService();
455 }
456
457 private RouteHeaderService getRouteHeaderService() {
458 return KEWServiceLocator.getRouteHeaderService();
459 }
460 }