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 }