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 }