Merge from ECOMP's repository
[vid.git] / vid-app-common / src / test / java / org / onap / vid / job / command / JobCommandFactoryTest.java
1 package org.onap.vid.job.command;
2
3 import com.fasterxml.jackson.annotation.JsonCreator;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5 import com.google.common.collect.ImmutableMap;
6 import org.mockito.Mock;
7 import org.mockito.MockitoAnnotations;
8 import org.onap.vid.job.Job;
9 import org.onap.vid.job.JobAdapter;
10 import org.onap.vid.job.JobCommand;
11 import org.onap.vid.job.JobType;
12 import org.onap.vid.job.impl.JobSharedData;
13 import org.testng.annotations.BeforeMethod;
14 import org.testng.annotations.DataProvider;
15 import org.testng.annotations.Test;
16
17 import java.util.Arrays;
18 import java.util.Map;
19 import java.util.Objects;
20 import java.util.UUID;
21 import java.util.stream.Collectors;
22
23 import static org.hamcrest.CoreMatchers.equalTo;
24 import static org.hamcrest.MatcherAssert.assertThat;
25 import static org.mockito.Mockito.verify;
26 import static org.mockito.Mockito.when;
27
28 public class JobCommandFactoryTest {
29
30     private JobCommandFactory jobCommandFactory;
31
32     @Mock
33     private Job job;
34
35     @Mock
36     private JobCommand mockCommand;
37
38     @BeforeMethod
39     public void initMocks() {
40         MockitoAnnotations.initMocks(this);
41     }
42
43     @BeforeMethod
44     public void setUp() {
45         jobCommandFactory = new JobCommandFactory(any -> mockCommand);
46     }
47
48     @DataProvider
49     public Object[][] jobTypes() {
50         return Arrays.stream(
51                 JobType.values()
52         ).map(v -> new Object[]{v}).collect(Collectors.toList()).toArray(new Object[][]{});
53
54     }
55
56     public static class MockedRequest implements JobAdapter.AsyncJobRequest {
57
58         final public int x;
59         final public String y;
60
61         @JsonCreator
62         public MockedRequest(@JsonProperty("x")int x, @JsonProperty("y")String y) {
63             this.x = x;
64             this.y = y;
65         }
66
67         @Override
68         public boolean equals(Object o) {
69             if (this == o) return true;
70             if (!(o instanceof MockedRequest)) return false;
71             MockedRequest that = (MockedRequest) o;
72             return x == that.x &&
73                     Objects.equals(y, that.y);
74         }
75
76         @Override
77         public int hashCode() {
78
79             return Objects.hash(x, y);
80         }
81     }
82
83     @Test(dataProvider = "jobTypes")
84     public void givenJob_createCommandCallsTheInitAndReturnsTheInstance(JobType jobType) {
85
86         final UUID uuid = UUID.randomUUID();
87         final Map<String, Object> data = ImmutableMap.of("foo", "bar");
88         final JobSharedData sharedData = new JobSharedData(uuid, "userid", new MockedRequest(1,"a"));
89
90         when(job.getType()).thenReturn(jobType);
91         when(job.getUuid()).thenReturn(uuid);
92         when(job.getData()).thenReturn(data);
93         when(job.getSharedData()).thenReturn(sharedData);
94
95         final JobCommand command = jobCommandFactory.toCommand(job);
96
97         verify(mockCommand).init(sharedData, data);
98
99         assertThat(command, equalTo(mockCommand));
100     }
101
102 }