001 /** 002 * Copyright 2005-2013 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.actions.asyncservices; 017 018 import static org.junit.Assert.assertFalse; 019 import static org.junit.Assert.assertNotNull; 020 import static org.junit.Assert.assertNull; 021 022 import java.util.ArrayList; 023 import java.util.List; 024 025 import org.junit.Test; 026 import org.kuali.rice.kew.actionrequest.ActionRequestValue; 027 import org.kuali.rice.kew.api.WorkflowDocument; 028 import org.kuali.rice.kew.api.WorkflowDocumentFactory; 029 import org.kuali.rice.kew.api.action.ActionInvocation; 030 import org.kuali.rice.kew.api.action.ActionType; 031 import org.kuali.rice.kew.impl.action.ActionInvocationQueueImpl; 032 import org.kuali.rice.kew.rule.TestRuleAttribute; 033 import org.kuali.rice.kew.service.KEWServiceLocator; 034 import org.kuali.rice.kew.test.KEWTestCase; 035 036 /** 037 * 038 * @author Kuali Rice Team (rice.collab@kuali.org) 039 * 040 */ 041 public class ActionInvocationQueueImplTest extends KEWTestCase { 042 043 044 @Test public void testActionInvocationQueue_worksWithNoActionItem() throws Exception { 045 046 TestRuleAttribute.setRecipientPrincipalIds("TestRole", "QualRole", getRecipients()); 047 048 String rkirkendPrincipalId = getPrincipalIdForName("rkirkend"); 049 WorkflowDocument doc = WorkflowDocumentFactory.createDocument(rkirkendPrincipalId, "TestDocumentType"); 050 doc.route(""); 051 052 List<ActionRequestValue> requests = KEWServiceLocator.getActionRequestService().findAllActionRequestsByDocumentId(doc.getDocumentId()); 053 assertFalse(requests.isEmpty()); 054 055 ActionRequestValue request = null; 056 for (ActionRequestValue tempRequest : requests) { 057 if (tempRequest.getPrincipal() != null && tempRequest.getPrincipal().getPrincipalName().equals("user1")) 058 { 059 request = tempRequest; 060 break; 061 } 062 } 063 064 assertNotNull(request); 065 066 String user1PrincipalId = getPrincipalIdForName("user1"); 067 String actionItemID = request.getDocumentId().trim(); 068 069 new ActionInvocationQueueImpl().invokeAction(user1PrincipalId, request.getDocumentId(), ActionInvocation.create( 070 ActionType.fromCode(request.getActionRequested()), actionItemID)); 071 //do it again and make sure we don't have a blow up 072 new ActionInvocationQueueImpl().invokeAction(user1PrincipalId, request.getDocumentId(), ActionInvocation.create( 073 ActionType.fromCode(request.getActionRequested()), actionItemID)); 074 075 //verify that user1 doesn't have any AR's 076 requests = KEWServiceLocator.getActionRequestService().findAllActionRequestsByDocumentId(doc.getDocumentId()); 077 assertFalse(requests.isEmpty()); 078 079 request = null; 080 for (ActionRequestValue tempRequest : requests) { 081 if (tempRequest.getPrincipalId() != null && tempRequest.getPrincipalId().equals(getPrincipalIdForName("user1")) && tempRequest.isActive()) { 082 request = tempRequest; 083 break; 084 } 085 } 086 087 assertNull(request); 088 089 } 090 091 public List<String> getRecipients() { 092 List<String> recipients = new ArrayList<String>(); 093 recipients.add(getPrincipalIdForName("user1")); 094 recipients.add(getPrincipalIdForName("user2")); 095 return recipients; 096 } 097 098 }