blob: 738761d9771f96380262fef664a5f66a441047d0 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2014 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.ide.integration.tests.util;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.osee.ats.api.AtsApi;
import org.eclipse.osee.ats.api.ai.ActionableItem;
import org.eclipse.osee.ats.api.ai.IAtsActionableItem;
import org.eclipse.osee.ats.api.ai.IAtsActionableItemService;
import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
import org.eclipse.osee.ats.api.data.AtsAttributeTypes;
import org.eclipse.osee.ats.api.review.IAtsDecisionReview;
import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview;
import org.eclipse.osee.ats.api.team.IAtsTeamDefinition;
import org.eclipse.osee.ats.api.team.IAtsTeamDefinitionService;
import org.eclipse.osee.ats.api.user.AtsUser;
import org.eclipse.osee.ats.api.version.IAtsVersion;
import org.eclipse.osee.ats.api.version.IAtsVersionService;
import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition;
import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition;
import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinition;
import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionService;
import org.eclipse.osee.ats.api.workdef.IAttributeResolver;
import org.eclipse.osee.ats.api.workdef.StateType;
import org.eclipse.osee.ats.api.workflow.IAtsAction;
import org.eclipse.osee.ats.api.workflow.IAtsBranchService;
import org.eclipse.osee.ats.api.workflow.IAtsTask;
import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService;
import org.eclipse.osee.framework.core.data.ArtifactId;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.junit.Before;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
/**
* Class in support of testing ATS using Mocks. Sets up a standard configuration of mocks to use.
*
* @author Donald G. Dunne
*/
public class AtsMockitoTest {
// @formatter:off
@Mock protected AtsUser currentUser;
@Mock protected IAtsTeamWorkflow teamWf;
@Mock protected IAtsTeamDefinition teamDef;
@Mock protected IAtsVersion ver1, ver2, ver3, ver4;
@Mock protected IAtsDecisionReview decRev;
@Mock protected IAtsPeerToPeerReview peerRev;
@Mock protected IAtsTask task1, task2;
@Mock protected ActionableItem testAi, testAi2;
@Mock protected IAtsAction action;
@Mock protected IAtsStateDefinition analyze, implement, completed, cancelled;
@Mock protected IAtsWorkDefinition workDef;
@Mock protected IAtsWidgetDefinition estHoursWidgetDef, workPackageWidgetDef;
@Mock protected IAttributeResolver attrResolver;
@Mock protected IAtsVersionService versionService;
@Mock protected IAtsBranchService branchService;
@Mock protected IAtsWorkDefinitionService workDefService;
@Mock protected IAtsWorkItemService workItemService;
@Mock protected IAtsActionableItemService actionableItemService;
@Mock protected IAtsTeamDefinitionService teamDefinitionService;
@Mock protected AtsApi atsApi;
// @formatter:on
public ArtifactId WORK_DEF_ART = ArtifactId.valueOf(345L);
private final String className;
private String testName = "";
public AtsMockitoTest(String className) {
this.className = className;
}
public void setTestName(String testName) {
this.testName = testName;
}
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
when(atsApi.getAttributeResolver()).thenReturn(attrResolver);
when(atsApi.getVersionService()).thenReturn(versionService);
when(atsApi.getBranchService()).thenReturn(branchService);
when(atsApi.getWorkDefinitionService()).thenReturn(workDefService);
when(atsApi.getWorkItemService()).thenReturn(workItemService);
when(atsApi.getActionableItemService()).thenReturn(actionableItemService);
when(atsApi.getTeamDefinitionService()).thenReturn(teamDefinitionService);
when(currentUser.getName()).thenReturn("User1");
when(currentUser.getId()).thenReturn(Lib.generateId());
when(currentUser.getUserId()).thenReturn("1324");
when(currentUser.isActive()).thenReturn(true);
initializeState(analyze, "Analyze", StateType.Working, 1, Arrays.asList(implement, completed, cancelled),
Arrays.asList(cancelled));
initializeState(implement, "Implement", StateType.Working, 2, Arrays.asList(analyze, completed, cancelled),
Arrays.asList(cancelled, analyze));
initializeState(completed, "Completed", StateType.Completed, 3, Arrays.asList(implement),
Arrays.asList(implement));
initializeState(cancelled, "Cancelled", StateType.Cancelled, 4, Arrays.asList(analyze, implement),
Arrays.asList(analyze, implement));
when(workDef.getStartState()).thenReturn(analyze);
when(workDef.getStates()).thenReturn(Arrays.asList(cancelled, analyze, completed, implement));
when(estHoursWidgetDef.getName()).thenReturn(AtsAttributeTypes.EstimatedHours.getUnqualifiedName());
when(estHoursWidgetDef.getAttributeType()).thenReturn(AtsAttributeTypes.EstimatedHours);
when(estHoursWidgetDef.getXWidgetName()).thenReturn("XFloatDam");
when(workPackageWidgetDef.getName()).thenReturn(AtsAttributeTypes.WorkPackage.getUnqualifiedName());
when(workPackageWidgetDef.getAttributeType()).thenReturn(AtsAttributeTypes.WorkPackage);
when(workPackageWidgetDef.getXWidgetName()).thenReturn("XTextDam");
initializeAi(testAi, "AI", true, true);
initializeAi(testAi2, "AI2", true, true);
Collection<ActionableItem> aias = new HashSet<>();
aias.add(testAi);
aias.add(testAi2);
when(teamDef.getName()).thenReturn(getTitle("Test Team Def"));
when(teamDef.getId()).thenReturn(Lib.generateId());
when(teamDef.isActive()).thenReturn(true);
when(teamDef.getAtsApi()).thenReturn(atsApi);
when(atsApi.getTeamDefinitionService()).thenReturn(teamDefinitionService);
when(teamDefinitionService.getLeads(teamDef)).thenReturn(Arrays.asList(currentUser));
when(actionableItemService.getActionableItems(teamDef)).thenReturn(aias);
when(attrResolver.getSoleArtifactIdReference(teamDef, AtsAttributeTypes.WorkflowDefinitionReference,
ArtifactId.SENTINEL)).thenReturn(WORK_DEF_ART);
inializeVersion(ver1, "ver 1.0");
inializeVersion(ver2, "ver 2.0");
inializeVersion(ver3, "ver 3.0");
inializeVersion(ver4, "ver 4.0");
Set<IAtsVersion> vers = new HashSet<>();
vers.addAll(Arrays.asList(ver1, ver2, ver3, ver4));
when(teamDefinitionService.getVersions(teamDef)).thenReturn(vers);
when(action.getTeamWorkflows()).thenReturn(Arrays.asList(teamWf));
when(action.getId()).thenReturn(45L);
when(action.getName()).thenReturn(getTitle("Action"));
Set<IAtsActionableItem> aias2 = new HashSet<>();
aias2.add(testAi);
aias2.add(testAi2);
when(teamWf.getName()).thenReturn("Test Team Wf");
when(teamWf.getActionableItems()).thenReturn(aias2);
when(teamWf.getAtsId()).thenReturn("ATS0008");
when(teamWf.getArtifactTypeName()).thenReturn(AtsArtifactTypes.TeamWorkflow.getName());
when(teamWf.getTeamDefinition()).thenReturn(teamDef);
inializeTask(task1, "Test Task 1");
inializeTask(task2, "Test Task 2");
when(decRev.getParentTeamWorkflow()).thenReturn(teamWf);
when(decRev.getName()).thenReturn(getTitle("Test Dec Rev"));
when(decRev.getAssignees()).thenReturn(Arrays.asList(currentUser));
when(peerRev.getParentTeamWorkflow()).thenReturn(teamWf);
when(peerRev.getName()).thenReturn(getTitle("Test Peer Rev"));
when(peerRev.getAssignees()).thenReturn(Arrays.asList(currentUser));
}
private void inializeTask(IAtsTask task, String name) {
when(task.getName()).thenReturn(getTitle(name));
when(task.getId()).thenReturn(Lib.generateId());
when(task.getParentTeamWorkflow()).thenReturn(teamWf);
}
private void inializeVersion(IAtsVersion version, String name) {
when(version.getName()).thenReturn(name);
when(version.getId()).thenReturn(Lib.generateId());
}
private void initializeState(IAtsStateDefinition state, String name, StateType type, int ordinal, List<IAtsStateDefinition> toStates, List<IAtsStateDefinition> overrideValidationStates) {
when(state.getName()).thenReturn(name);
when(state.getWorkDefinition()).thenReturn(workDef);
when(state.getStateType()).thenReturn(type);
when(state.getOrdinal()).thenReturn(ordinal);
when(state.getToStates()).thenReturn(toStates);
}
private void initializeAi(IAtsActionableItem ai, String name, boolean active, boolean actionable) {
when(ai.getId()).thenReturn(Lib.generateId());
when(ai.getName()).thenReturn(name);
when(ai.isActionable()).thenReturn(actionable);
when(ai.isActive()).thenReturn(active);
when(ai.getTeamDefinition()).thenReturn(teamDef);
}
public IAtsWorkDefinition getWorkDef() {
return workDef;
}
public IAtsStateDefinition getAnalyzeStateDef() {
return analyze;
}
public IAtsWidgetDefinition getEstHoursWidgetDef() {
return estHoursWidgetDef;
}
public IAtsWidgetDefinition getWorkPackageWidgetDef() {
return workPackageWidgetDef;
}
public IAtsStateDefinition getImplementStateDef() {
return implement;
}
public IAtsStateDefinition getCompletedStateDef() {
return completed;
}
public IAtsStateDefinition getCancelledStateDef() {
return cancelled;
}
public IAtsTeamWorkflow getTeamWf() {
return teamWf;
}
public IAtsActionableItem getTestAi() {
return testAi;
}
public IAtsTeamDefinition getTestTeamDef() {
return teamDef;
}
@Override
public String toString() {
return getTitle("");
}
public AtsUser getCurrentUser() {
return currentUser;
}
public IAtsTeamDefinition getTeamDef() {
return teamDef;
}
public IAtsVersion getVer1() {
return ver1;
}
public IAtsVersion getVer2() {
return ver2;
}
public IAtsVersion getVer3() {
return ver3;
}
public IAtsVersion getVer4() {
return ver4;
}
public IAtsDecisionReview getDecRev() {
return decRev;
}
public IAtsPeerToPeerReview getPeerRev() {
return peerRev;
}
public IAtsTask getTask1() {
return task1;
}
public IAtsTask getTask2() {
return task2;
}
public IAtsActionableItem getTestAi2() {
return testAi2;
}
public IAtsAction getAction() {
return action;
}
protected String getTitle(String objectName) {
StringBuilder sb = new StringBuilder("AMT -");
if (Strings.isValid(objectName)) {
sb.append(" Obj:[");
sb.append(objectName);
sb.append("] ");
}
if (Strings.isValid(testName)) {
sb.append(" Test:[");
sb.append(testName);
sb.append("] ");
}
if (Strings.isValid(className)) {
sb.append(" Class:[");
sb.append(className);
sb.append("] ");
}
return sb.toString().replaceFirst(" $", "");
}
}