63d2e56049d7f8ba7e6cb30a41406932a8d7b98c
[sdc/sdc-workflow-designer.git] /
1 package org.onap.sdc.workflow.persistence.impl;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5 import static org.mockito.ArgumentMatchers.isNull;
6 import static org.mockito.Matchers.any;
7 import static org.mockito.Matchers.eq;
8 import static org.mockito.Mockito.doReturn;
9 import static org.mockito.Mockito.times;
10 import static org.mockito.Mockito.verify;
11
12 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
13 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
14 import com.amdocs.zusammen.datatypes.Id;
15 import com.amdocs.zusammen.datatypes.SessionContext;
16 import com.amdocs.zusammen.datatypes.item.ElementContext;
17 import com.amdocs.zusammen.datatypes.item.Info;
18 import java.util.ArrayList;
19 import java.util.Collection;
20 import java.util.Optional;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.junit.runner.RunWith;
24 import org.mapstruct.ap.internal.util.Collections;
25 import org.mockito.InjectMocks;
26 import org.mockito.Mock;
27 import org.mockito.Spy;
28 import org.mockito.junit.MockitoJUnitRunner;
29 import org.onap.sdc.workflow.persistence.types.ParameterEntity;
30 import org.onap.sdc.workflow.persistence.types.ParameterPropertyName;
31 import org.onap.sdc.workflow.persistence.types.ParameterRole;
32 import org.onap.sdc.workflow.persistence.types.ParameterType;
33 import org.onap.sdc.workflow.persistence.types.WorkflowElementType;
34 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
35 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
36
37 @RunWith(MockitoJUnitRunner.class)
38 public class ParameterRepositoryTest {
39
40     private static final String ITEM1_ID = "item_id_1";
41     private static final String VERSION1_ID = "version_id_1";
42     private static final String PARAMETER1_ID = "parameter_id_1";
43     private static final String PARAMETER2_ID = "parameter_id_2";
44     private static final String PARAMETERS_PARENT_ID = "parameters_id";
45
46
47     @Mock
48     private ZusammenAdaptor zusammenAdaptorMock;
49     @Spy
50     @InjectMocks
51     private ParameterRepositoryImpl parameterRepository;
52
53     @Before
54     public void setUp() {
55         SessionContextProviderFactory.getInstance().createInterface().create("test_user", "workflow");
56     }
57
58     @Test
59     public void shouldGetParameterById() {
60
61         ElementInfo element = new ElementInfo();
62         element.setId(new Id(PARAMETER1_ID));
63         Info info = new Info();
64         info.setName("testInput");
65         info.addProperty(ParameterPropertyName.TYPE.name(),ParameterType.FLOAT.name());
66         info.addProperty(ParameterPropertyName.mandatory.name(),true);
67         element.setInfo(info);
68         doReturn(Optional.of(element)).when(zusammenAdaptorMock)
69                                       .getElementInfo(any(SessionContext.class), any(ElementContext.class),
70                                               eq(new Id(PARAMETER1_ID)));
71         ParameterEntity result = parameterRepository.get(ITEM1_ID, VERSION1_ID, PARAMETER1_ID);
72         verify(zusammenAdaptorMock)
73                 .getElementInfo(any(SessionContext.class), any(ElementContext.class), eq(new Id(PARAMETER1_ID)));
74         assertEquals("testInput", result.getName());
75
76     }
77
78
79     @Test
80     public void shouldUpdateParameter() {
81         ParameterEntity parameterEntityToUpdate = new ParameterEntity();
82         parameterEntityToUpdate.setId(PARAMETER1_ID);
83         parameterEntityToUpdate.setName("Input1");
84         parameterEntityToUpdate.setMandatory(true);
85         parameterEntityToUpdate.setType(ParameterType.STRING);
86
87         parameterRepository.update(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT, parameterEntityToUpdate);
88         verify(zusammenAdaptorMock)
89                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
90                         eq("Update WorkflowVersion Parameter"));
91
92     }
93
94     @Test
95     public void shouldCreateParameterStructure(){
96         parameterRepository.createStructure(ITEM1_ID,VERSION1_ID);
97         verify(zusammenAdaptorMock)
98                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
99                         eq("Create WorkflowVersion INPUTS Element"));
100         verify(zusammenAdaptorMock)
101                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
102                         eq("Create WorkflowVersion OUTPUTS Element"));
103     }
104
105     @Test
106     public void shouldDeleteParameter() {
107         parameterRepository.delete(ITEM1_ID, VERSION1_ID, PARAMETER1_ID);
108         verify(zusammenAdaptorMock)
109                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
110                         eq("Delete Parameter with id parameter_id_1"));
111     }
112
113
114     @Test
115     public void shouldListParametersByType() {
116
117         ElementInfo parameter1 = new ElementInfo();
118         parameter1.setId(new Id(PARAMETER1_ID));
119         Info info1 = new Info();
120         info1.setName("input1");
121         info1.addProperty(ParameterPropertyName.TYPE.name(),"INTEGER");
122         info1.addProperty(ParameterPropertyName.mandatory.name(),true);
123         parameter1.setInfo(info1);
124         ElementInfo parameter2 = new ElementInfo();
125         parameter2.setId(new Id(PARAMETER2_ID));
126         Info info2 = new Info();
127         info2.setName("input2");
128         info2.addProperty(ParameterPropertyName.TYPE.name(),"STRING");
129         info2.addProperty(ParameterPropertyName.mandatory.name(),false);
130         parameter2.setInfo(info2);
131         Collection<ElementInfo> parameters = Collections.asSet(parameter1, parameter2);
132         doReturn(parameters).when(zusammenAdaptorMock)
133                             .listElementsByName(any(SessionContext.class), any(ElementContext.class),isNull(Id.class),eq(ParameterRole.INPUT.name()));
134         Collection<ParameterEntity> results = parameterRepository.list(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
135
136         verify(zusammenAdaptorMock).listElementsByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
137                 eq(WorkflowElementType.INPUT.name()));
138         assertTrue(results.stream().anyMatch(parameterEntity -> parameterEntity.getId().equals(PARAMETER1_ID)));
139         assertTrue(results.stream().anyMatch(parameterEntity -> parameterEntity.getId().equals(PARAMETER2_ID)));
140     }
141
142     @Test
143     public void shouldDeleteAllParametersByType() {
144         ElementInfo parameterParentElement = new ElementInfo();
145         parameterParentElement.setId(new Id(PARAMETERS_PARENT_ID));
146         ElementInfo parameter1 = new ElementInfo();
147         parameter1.setId(new Id(PARAMETER1_ID));
148         ElementInfo parameter2 = new ElementInfo();
149         parameter2.setId(new Id(PARAMETER2_ID));
150         parameterParentElement.setSubElements(new ArrayList<>());
151         parameterParentElement.getSubElements().add(parameter1);
152         parameterParentElement.getSubElements().add(parameter2);
153
154         Optional<ElementInfo> elementOptional = Optional.of(parameterParentElement);
155
156         doReturn(elementOptional).when(zusammenAdaptorMock)
157                                  .getElementInfoByName(any(SessionContext.class), any(ElementContext.class),
158                                          isNull(Id.class), eq(WorkflowElementType.INPUTS.name()));
159
160         parameterRepository.deleteAll(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
161         verify(zusammenAdaptorMock)
162                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
163                         eq("Delete all INPUT"));
164     }
165
166 }