Merge from ECOMP's repository
[vid.git] / vid-app-common / src / test / java / org / onap / vid / job / command / WatchChildrenJobsBLTest.java
1 package org.onap.vid.job.command;
2
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.onap.portalsdk.core.service.DataAccessService;
7 import org.onap.vid.job.Job.JobStatus;
8 import org.onap.vid.job.impl.JobDaoImpl;
9 import org.onap.vid.utils.DaoUtils;
10 import org.testng.annotations.BeforeClass;
11 import org.testng.annotations.DataProvider;
12 import org.testng.annotations.Test;
13
14 import java.util.ArrayList;
15 import java.util.Arrays;
16 import java.util.List;
17 import java.util.UUID;
18 import java.util.stream.Collectors;
19
20 import static org.mockito.ArgumentMatchers.*;
21 import static org.mockito.Mockito.when;
22 import static org.testng.AssertJUnit.assertEquals;
23
24 public class WatchChildrenJobsBLTest {
25     @Mock
26     private DataAccessService dataAccessService;
27
28     @InjectMocks
29     private WatchChildrenJobsBL watchChildrenJobsBL;
30
31     @BeforeClass
32     public void initMocks() {
33         MockitoAnnotations.initMocks(this);
34     }
35
36     public static Object[][] dataProviderForChildrenStatusOnly() {
37         return new Object[][]{
38                  {Arrays.asList(JobStatus.STOPPED, JobStatus.COMPLETED_WITH_NO_ACTION, JobStatus.COMPLETED), JobStatus.COMPLETED_WITH_ERRORS},
39                  {Arrays.asList(JobStatus.COMPLETED, JobStatus.FAILED, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED_WITH_ERRORS},
40                  {Arrays.asList(null, JobStatus.COMPLETED), JobStatus.COMPLETED_WITH_ERRORS},
41                  {Arrays.asList(null, JobStatus.IN_PROGRESS), JobStatus.IN_PROGRESS},
42                  {Arrays.asList(null, JobStatus.FAILED), JobStatus.FAILED},
43                  {new ArrayList<>(), JobStatus.COMPLETED_WITH_NO_ACTION}
44         };
45     }
46
47     @DataProvider
48     public static Object[][] childrenStatusDataProvider() {
49
50         List<Object[]> result = new ArrayList<>();
51         result.addAll(Arrays.asList(dataProviderForChildrenStatusOnly()));
52         result.addAll(Arrays.asList(inputsStatusAndExpectedOutputDataProvider()));
53         return result.toArray(new Object[result.size()][]);
54     }
55
56     @DataProvider
57     public static Object[][] inputsStatusAndExpectedOutputDataProvider() {
58         return new Object[][]{
59                 {Arrays.asList(JobStatus.COMPLETED, JobStatus.COMPLETED), JobStatus.COMPLETED},
60                 {Arrays.asList(JobStatus.COMPLETED, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED},
61                 {Arrays.asList(JobStatus.FAILED, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.FAILED},
62                 {Arrays.asList(JobStatus.FAILED, JobStatus.COMPLETED), JobStatus.COMPLETED_WITH_ERRORS},
63                 {Arrays.asList(JobStatus.RESOURCE_IN_PROGRESS, JobStatus.FAILED), JobStatus.IN_PROGRESS},
64                 {Arrays.asList(JobStatus.PAUSE, JobStatus.FAILED), JobStatus.IN_PROGRESS},
65                 {Arrays.asList(JobStatus.PENDING, JobStatus.FAILED), JobStatus.IN_PROGRESS},
66                 {Arrays.asList(JobStatus.IN_PROGRESS, JobStatus.COMPLETED), JobStatus.IN_PROGRESS},
67                 {Arrays.asList(JobStatus.IN_PROGRESS, JobStatus.IN_PROGRESS),  JobStatus.IN_PROGRESS},
68                 {Arrays.asList(JobStatus.COMPLETED, JobStatus.COMPLETED_WITH_ERRORS), JobStatus.COMPLETED_WITH_ERRORS},
69                 {Arrays.asList(JobStatus.COMPLETED_WITH_ERRORS, JobStatus.FAILED), JobStatus.COMPLETED_WITH_ERRORS},
70                 {Arrays.asList(JobStatus.COMPLETED_WITH_ERRORS, JobStatus.COMPLETED_WITH_ERRORS), JobStatus.COMPLETED_WITH_ERRORS},
71                 {Arrays.asList(JobStatus.COMPLETED_WITH_ERRORS, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED_WITH_ERRORS},
72                 {Arrays.asList(JobStatus.COMPLETED_WITH_NO_ACTION, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED_WITH_NO_ACTION},
73
74
75         };
76     }
77
78     @Test(dataProvider = "childrenStatusDataProvider")
79     public void whenRetrieveListOfChildrenWithStatues_thenAccumulatedChildrenStatusAsExpected(List<JobStatus> childJobs, JobStatus expectedChildrenJobsStatus) {
80         //init sql result mock
81         List<JobDaoImpl> mockChildren = childJobs.stream().map(st -> {
82             JobDaoImpl job = new JobDaoImpl();
83             job.setUuid(UUID.randomUUID());
84             job.setStatus(st);
85             return job;
86         }).collect(Collectors.toList());
87         when(dataAccessService.getList(eq(JobDaoImpl.class), anyString(), any(), eq(DaoUtils.getPropsMap())))
88                 .thenReturn(mockChildren);
89
90         List<String> uuids = mockChildren.stream().map(job -> job.getUuid().toString()).collect(Collectors.toList());
91         assertEquals(expectedChildrenJobsStatus, watchChildrenJobsBL.retrieveChildrenJobsStatus(uuids));
92     }
93
94     @Test(dataProvider = "inputsStatusAndExpectedOutputDataProvider")
95     public void whenCumulate2JobStatus_thenResultAsExpected(List<JobStatus> jobs, JobStatus expectedChildrenJobsStatus) {
96         assertEquals(expectedChildrenJobsStatus, watchChildrenJobsBL.cumulateJobStatus(jobs.get(0), jobs.get(1)));
97     }
98 }