17037d9bd2a33c6220f3d748ff82dff02c3e572a
[sdc/sdc-workflow-designer.git] /
1 package org.onap.sdc.workflow.services.impl;
2
3 import static org.mockito.ArgumentMatchers.any;
4 import static org.mockito.Mockito.doReturn;
5 import static org.mockito.Mockito.times;
6 import static org.mockito.Mockito.verify;
7 import static org.onap.sdc.workflow.TestUtil.createItem;
8 import static org.onap.sdc.workflow.TestUtil.createWorkflow;
9
10 import java.util.Arrays;
11 import java.util.List;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.mockito.InjectMocks;
16 import org.mockito.Mock;
17 import org.onap.sdc.workflow.persistence.types.Workflow;
18 import org.onap.sdc.workflow.services.UniqueValueService;
19 import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
20 import org.onap.sdc.workflow.services.impl.mappers.WorkflowMapper;
21 import org.openecomp.sdc.versioning.ItemManager;
22 import org.openecomp.sdc.versioning.types.Item;
23 import org.openecomp.sdc.versioning.types.ItemStatus;
24 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
25
26 @RunWith(SpringJUnit4ClassRunner.class)
27 public class WorkflowManagerImplTest {
28
29     private static final String ITEM1_ID = "workflowId1";
30     private static final String WORKFLOW_TYPE = "WORKFLOW";
31     private static final String WORKFLOW_NAME_UNIQUE_TYPE = "WORKFLOW_NAME";
32     private List<Item> itemList;
33
34     @Mock
35     private WorkflowMapper workflowMapperMock;
36
37     @Mock
38     private ItemManager itemManagerMock;
39
40     @Mock
41     private UniqueValueService uniqueValueServiceMock;
42
43     @InjectMocks
44     private WorkflowManagerImpl workflowManager;
45
46
47     @Before
48     public void setUp() {
49         itemList = Arrays.asList(createItem(1, true, true), createItem(2, true, true), createItem(3, true, true));
50
51     }
52
53
54     @Test
55     public void shouldReturnWorkflowVersionList() {
56
57         doReturn(itemList).when(itemManagerMock).list(WorkflowManagerImpl.ITEM_PREDICATE);
58         workflowManager.list();
59         verify(itemManagerMock).list(WorkflowManagerImpl.ITEM_PREDICATE);
60     }
61
62     @Test(expected = EntityNotFoundException.class)
63     public void shouldThrowExceptionWhenWorkflowDontExist() {
64         Workflow nonExistingWorkflow = new Workflow();
65         nonExistingWorkflow.setId(ITEM1_ID);
66         doReturn(null).when(itemManagerMock).get(ITEM1_ID);
67         workflowManager.get(nonExistingWorkflow);
68         verify(workflowMapperMock, times(3)).itemToWorkflow(any(Item.class));
69     }
70
71     @Test
72     public void shouldReturnWorkflow() {
73         Item retrievedItem = createItem(1, true, true);
74         doReturn(retrievedItem).when(itemManagerMock).get(ITEM1_ID);
75         Workflow workflow = createWorkflow(1, true);
76         workflowManager.get(workflow);
77         verify(itemManagerMock).get(ITEM1_ID);
78         verify(workflowMapperMock).itemToWorkflow(retrievedItem);
79
80
81     }
82
83     @Test
84     public void shouldCreateWorkflowItemFromWorkflow() {
85         Workflow workflowToBeCreated = createWorkflow(1, false);
86         Item createdWorkflowItem = createItem(1, false, true);
87         doReturn(createdWorkflowItem).when(workflowMapperMock).workflowToItem(workflowToBeCreated);
88         doReturn(createdWorkflowItem).when(itemManagerMock).create(createdWorkflowItem);
89         workflowManager.create(workflowToBeCreated);
90         verify(uniqueValueServiceMock)
91                 .validateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, new String[] {workflowToBeCreated.getName()});
92
93         createdWorkflowItem.setStatus(ItemStatus.ACTIVE);
94         createdWorkflowItem.setType(WORKFLOW_TYPE);
95         verify(itemManagerMock).create(createdWorkflowItem);
96         verify(uniqueValueServiceMock)
97                 .createUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, new String[] {workflowToBeCreated.getName()});
98     }
99
100     @Test
101     public void shouldUpdateWorkflow() {
102         Item workflowItem = createItem(1, true, true);
103         doReturn(workflowItem).when(itemManagerMock).get(ITEM1_ID);
104         Workflow workflowToBeUpdated = createWorkflow(1, true);
105         doReturn(workflowItem).when(workflowMapperMock).workflowToItem(workflowToBeUpdated);
106         workflowManager.update(workflowToBeUpdated);
107         verify(itemManagerMock).update(workflowItem);
108         verify(uniqueValueServiceMock)
109                 .updateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, workflowItem.getName(), workflowToBeUpdated.getName());
110
111     }
112
113     @Test(expected = EntityNotFoundException.class)
114     public void shouldThrowExceptionWhenWorkflowToUpdateNotFound() {
115         doReturn(null).when(itemManagerMock).get(ITEM1_ID);
116         workflowManager.update(createWorkflow(1, true));
117     }
118
119 }