blob: 246ad834e9cf43c92fbd9785e6b7375e49ba3335 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2013 Boeing
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Boeing - initial API and implementation
**********************************************************************/
package org.eclipse.osee.ats.core.column;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.osee.ats.api.AtsApi;
import org.eclipse.osee.ats.api.user.AtsUser;
import org.eclipse.osee.ats.api.user.IAtsUserService;
import org.eclipse.osee.ats.api.workdef.StateType;
import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
import org.eclipse.osee.ats.api.workflow.state.IAtsStateManager;
import org.eclipse.osee.ats.core.users.AbstractUserTest;
import org.eclipse.osee.ats.core.workflow.Action;
import org.junit.Assert;
import org.junit.Before;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
/**
* @tests AssigneeColumn
* @author Donald G. Dunne
*/
public class AssigneeColumnTest extends AbstractUserTest {
// @formatter:off
@Mock private IAtsTeamWorkflow workItem;
@Mock private IAtsStateManager stateMgr;
@Mock private IAtsTeamWorkflow workItem2;
@Mock private IAtsStateManager stateMgr2;
@Mock private Action action;
@Mock private AtsApi atsApi;
@Mock private IAtsUserService userService;
// @formatter:on
AssigneeColumn assigneeColumn;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
when(workItem.getStateMgr()).thenReturn(stateMgr);
when(workItem2.getStateMgr()).thenReturn(stateMgr2);
when(atsApi.getUserService()).thenReturn(userService);
when(action.getTeamWorkflows()).thenReturn(Arrays.asList(workItem, workItem2));
assigneeColumn = new AssigneeColumn(atsApi);
}
@org.junit.Test
public void testGetAssigneeStr_null() {
Assert.assertEquals("", assigneeColumn.getAssigneeStr(null));
}
@org.junit.Test
public void testGetAssigneeStrFromInWorkWorkflow() {
List<AtsUser> assigneesToReturn = new ArrayList<>();
assigneesToReturn.addAll(Arrays.asList(joe, steve, alice));
when(stateMgr.getStateType()).thenReturn(StateType.Working);
when(workItem.getAssignees()).thenReturn(assigneesToReturn);
Assert.assertEquals("joe; steve; alice", assigneeColumn.getAssigneeStr(workItem));
}
@org.junit.Test
public void testGetAssigneeStrFromCompletedWorkflow() {
List<AtsUser> assigneesToReturn = new ArrayList<>();
when(stateMgr.getStateType()).thenReturn(StateType.Working);
when(workItem.getAssignees()).thenReturn(assigneesToReturn);
Assert.assertEquals("", assigneeColumn.getAssigneeStr(workItem));
List<AtsUser> implementersToReturn = new ArrayList<>();
when(workItem.getImplementers()).thenReturn(implementersToReturn);
when(stateMgr.getStateType()).thenReturn(StateType.Completed);
when(workItem.getCompletedBy()).thenReturn(steve);
Assert.assertEquals("(steve)", assigneeColumn.getAssigneeStr(workItem));
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("steve"));
// add alice as completedFromState assignee
implementersToReturn.add(steve);
when(workItem.getCompletedFromState()).thenReturn("Implement");
List<AtsUser> implementStateImplementers = new ArrayList<>();
implementStateImplementers.add(alice);
when(stateMgr.getAssigneesForState("Implement")).thenReturn(implementStateImplementers);
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("alice"));
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("steve"));
// add duplicate steve as state assigne and ensure doesn't duplicate in string
implementStateImplementers.add(steve);
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("alice"));
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("steve"));
}
@org.junit.Test
public void testGetAssigneeStrFromCancelledWorkflow() {
List<AtsUser> assigneesToReturn = new ArrayList<>();
when(stateMgr.getStateType()).thenReturn(StateType.Working);
when(workItem.getAssignees()).thenReturn(assigneesToReturn);
Assert.assertEquals("", assigneeColumn.getAssigneeStr(workItem));
List<AtsUser> implementersToReturn = new ArrayList<>();
when(workItem.getImplementers()).thenReturn(implementersToReturn);
when(stateMgr.getStateType()).thenReturn(StateType.Cancelled);
when(workItem.getCancelledBy()).thenReturn(steve);
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("steve"));
// add alice as completedFromState assignee
implementersToReturn.add(steve);
when(workItem.getCancelledFromState()).thenReturn("Implement");
List<AtsUser> implementStateImplementers = new ArrayList<>();
implementStateImplementers.add(alice);
when(stateMgr.getAssigneesForState("Implement")).thenReturn(implementStateImplementers);
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("alice"));
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("steve"));
// add duplicate steve as state assigne and ensure doesn't duplicate in string
implementStateImplementers.add(steve);
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("alice"));
Assert.assertTrue(assigneeColumn.getAssigneeStr(workItem).contains("steve"));
}
@org.junit.Test
public void testGetAssigneesStr_hasActions_oneWorkingOneCancelled() {
List<AtsUser> assigneesToReturn = new ArrayList<>();
when(stateMgr.getStateType()).thenReturn(StateType.Working);
when(workItem.getAssignees()).thenReturn(assigneesToReturn);
when(stateMgr2.getStateType()).thenReturn(StateType.Cancelled);
when(workItem2.getCancelledFromState()).thenReturn("Implement");
List<AtsUser> implementStateImplementers = new ArrayList<>();
implementStateImplementers.add(joe);
when(workItem2.getImplementers()).thenReturn(implementStateImplementers);
Assert.assertEquals("(joe)", assigneeColumn.getAssigneeStr(action));
}
@org.junit.Test
public void testGetAssigneesStr_hasActions_duplicateImplementers() {
when(workItem.getStateMgr().getStateType()).thenReturn(StateType.Cancelled);
when(workItem.getImplementers()).thenReturn(Arrays.asList(joe));
when(workItem2.getStateMgr().getStateType()).thenReturn(StateType.Cancelled);
when(workItem2.getImplementers()).thenReturn(Arrays.asList(joe));
Assert.assertEquals("(joe)", assigneeColumn.getAssigneeStr(action));
}
@org.junit.Test
public void testGetAssigneesStr_hasActions_twoCancelled() {
when(workItem.getStateMgr().getStateType()).thenReturn(StateType.Cancelled);
when(workItem.getImplementers()).thenReturn(Arrays.asList(steve));
when(workItem2.getStateMgr().getStateType()).thenReturn(StateType.Cancelled);
when(workItem2.getImplementers()).thenReturn(Arrays.asList(joe));
Assert.assertTrue(assigneeColumn.getAssigneeStr(action).contains("joe"));
Assert.assertTrue(assigneeColumn.getAssigneeStr(action).contains("steve"));
}
@org.junit.Test
public void testGetAssigneesStr_hasActions_twoWorkingDuplicates() {
List<AtsUser> assigneesToReturn = new ArrayList<>();
assigneesToReturn.add(steve);
when(workItem.getAssignees()).thenReturn(assigneesToReturn);
when(stateMgr.getStateType()).thenReturn(StateType.Working);
List<AtsUser> assigneesToReturn2 = new ArrayList<>();
assigneesToReturn2.add(steve);
when(workItem2.getAssignees()).thenReturn(assigneesToReturn2);
when(stateMgr2.getStateType()).thenReturn(StateType.Working);
Assert.assertEquals("steve", assigneeColumn.getAssigneeStr(action));
}
@org.junit.Test
public void testGetAssigneesStr_invalidImplementersString() {
AssigneeColumn column = new AssigneeColumn((AtsApi) null);
when(stateMgr.getStateType()).thenReturn(StateType.Cancelled);
Assert.assertEquals("", column.getAssigneeStr(workItem));
}
}