2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.versioning.dao.impl.zusammen;
19 import static org.junit.Assert.assertEquals;
20 import static org.mockito.Matchers.eq;
21 import static org.mockito.Mockito.doReturn;
22 import static org.mockito.Mockito.verify;
23 import static org.openecomp.sdc.versioning.dao.impl.zusammen.TestUtil.createZusammenContext;
25 import com.amdocs.zusammen.datatypes.Id;
26 import com.amdocs.zusammen.datatypes.item.Info;
27 import java.util.ArrayList;
28 import java.util.Collection;
29 import java.util.Date;
30 import java.util.HashMap;
31 import java.util.Iterator;
32 import java.util.List;
34 import java.util.stream.Collectors;
35 import java.util.stream.Stream;
36 import org.junit.Assert;
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.mockito.ArgumentCaptor;
40 import org.mockito.InjectMocks;
41 import org.mockito.Mock;
42 import org.mockito.MockitoAnnotations;
43 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
44 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
45 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
46 import org.openecomp.sdc.versioning.types.Item;
47 import org.openecomp.sdc.versioning.types.ItemStatus;
49 public class ItemZusammenDaoImplTest {
51 private static final String USER = "user1";
52 private static final String ITEM_TYPE = "item_type";
53 private static final String ITEM_VERSIONS_STATUSES = "item_versions_statuses";
54 private static final String APP_PROP_1 = "app_prop1";
55 private static final String APP_PROP_2 = "app_prop2";
56 private static final String tenant = "dox";
59 private ZusammenAdaptor zusammenAdaptorMock;
61 private ItemZusammenDaoImpl itemDao;
64 public void setUp() throws Exception {
65 MockitoAnnotations.initMocks(this);
66 SessionContextProviderFactory.getInstance().createInterface().create(USER, tenant);
70 public void testListWhenNone() throws Exception {
71 doReturn(new ArrayList<>()).when(zusammenAdaptorMock)
72 .listItems(eq(createZusammenContext(USER)));
74 Collection<Item> items = itemDao.list();
76 Assert.assertTrue(items.isEmpty());
80 public void testList() throws Exception {
81 Map<String, Number> vlm1versionStatuses = new HashMap<>();
82 vlm1versionStatuses.put(VersionStatus.Draft.name(), 1);
84 Map<String, Number> vsp2versionStatuses = new HashMap<>();
85 vsp2versionStatuses.put(VersionStatus.Draft.name(), 3);
86 vsp2versionStatuses.put(VersionStatus.Certified.name(), 2);
89 List<com.amdocs.zusammen.datatypes.item.Item> returnedItems = Stream.of(
90 createItem("1", "vsp1", "vsp 1", "vsp", new Date(), new Date(), new HashMap<>()),
91 createItem("2", "vlm1", "vlm 1", "vlm", new Date(), new Date(), vlm1versionStatuses),
92 createItem("3", "vsp2", "vsp 2", "vsp", new Date(), new Date(), vsp2versionStatuses))
93 .collect(Collectors.toList());
94 doReturn(returnedItems).when(zusammenAdaptorMock).listItems(eq(createZusammenContext(USER)));
96 Collection<Item> items = itemDao.list();
97 assertEquals(items.size(), 3);
99 Iterator<Item> itemIterator = items.iterator();
100 assertItemEquals(itemIterator.next(), returnedItems.get(0));
101 assertItemEquals(itemIterator.next(), returnedItems.get(1));
102 assertItemEquals(itemIterator.next(), returnedItems.get(2));
106 public void testGetNonExisting() throws Exception {
107 Item requestedItem = new Item();
108 requestedItem.setId("1");
110 Item item = itemDao.get(requestedItem);
112 Assert.assertNull(item);
116 public void testGet() throws Exception {
117 Item inputItem = new Item();
118 inputItem.setId("1");
120 Map<String, Number> versionStatuses = new HashMap<>();
121 versionStatuses.put(VersionStatus.Draft.name(), 3);
122 versionStatuses.put(VersionStatus.Certified.name(), 2);
124 com.amdocs.zusammen.datatypes.item.Item toBeReturned =
125 createItem("1", "vsp1", "vsp 1", "vsp", new Date(System.currentTimeMillis() - 100),
126 new Date(), versionStatuses);
127 doReturn(toBeReturned).when(zusammenAdaptorMock)
128 .getItem(eq(createZusammenContext(USER)), eq(new Id(inputItem.getId())));
130 Item item = itemDao.get(inputItem);
132 Assert.assertNotNull(item);
133 assertItemEquals(item, toBeReturned);
134 assertEquals(item.getStatus(), ItemStatus.ACTIVE);
139 public void testCreate() throws Exception {
140 Item inputItem = new Item();
141 inputItem.setName("vsp1");
142 inputItem.setDescription("VSP 1");
143 inputItem.setType("vsp");
145 ArgumentCaptor<Info> capturedZusammenInfo = ArgumentCaptor.forClass(Info.class);
148 doReturn(new Id(itemId)).when(zusammenAdaptorMock)
149 .createItem(eq(createZusammenContext(USER)), capturedZusammenInfo.capture());
151 Item item = itemDao.create(inputItem);
153 Info capturedInfo = capturedZusammenInfo.getValue();
154 assertEquals(capturedInfo.getName(), inputItem.getName());
155 assertEquals(capturedInfo.getDescription(), inputItem.getDescription());
156 assertEquals(capturedInfo.getProperty(ITEM_TYPE), inputItem.getType());
157 assertEquals(capturedInfo.getProperty(ITEM_VERSIONS_STATUSES),
158 inputItem.getVersionStatusCounters());
160 assertEquals(item.getId(), itemId);
161 assertEquals(item.getName(), inputItem.getName());
162 assertEquals(item.getDescription(), inputItem.getDescription());
163 assertEquals(item.getType(), inputItem.getType());
164 assertEquals(item.getVersionStatusCounters(), inputItem.getVersionStatusCounters());
168 public void testUpdate() throws Exception {
169 Item item = new Item();
171 item.setName("vsp1");
172 item.setDescription("VSP 1");
174 item.addVersionStatus(VersionStatus.Draft);
175 item.addVersionStatus(VersionStatus.Draft);
176 item.addVersionStatus(VersionStatus.Certified);
178 ArgumentCaptor<Info> capturedZusammenInfo = ArgumentCaptor.forClass(Info.class);
180 itemDao.update(item);
182 verify(zusammenAdaptorMock)
183 .updateItem(eq(createZusammenContext(USER)), eq(new Id(item.getId())),
184 capturedZusammenInfo.capture());
186 Info capturedInfo = capturedZusammenInfo.getValue();
187 assertEquals(capturedInfo.getName(), item.getName());
188 assertEquals(capturedInfo.getDescription(), item.getDescription());
189 assertEquals(capturedInfo.getProperty(ITEM_TYPE), item.getType());
190 assertEquals(capturedInfo.getProperty(ITEM_VERSIONS_STATUSES),
191 item.getVersionStatusCounters());
194 private com.amdocs.zusammen.datatypes.item.Item createItem(String id, String name,
195 String description, String type,
197 Date modificationTime,
198 Map<String, Number> versionStatusCounters) {
199 com.amdocs.zusammen.datatypes.item.Item item = new com.amdocs.zusammen.datatypes.item.Item();
200 item.setId(new Id(id));
201 Info info = new Info();
203 info.setDescription(description);
204 info.addProperty(ITEM_TYPE, type);
205 info.addProperty(ITEM_VERSIONS_STATUSES, versionStatusCounters);
206 info.addProperty(APP_PROP_1, "app_prop1_value");
207 info.addProperty(APP_PROP_2, 8);
209 item.setCreationTime(creationTime);
210 item.setModificationTime(modificationTime);
214 private void assertItemEquals(Item item, com.amdocs.zusammen.datatypes.item.Item zusammenItem) {
215 assertEquals(item.getId(), zusammenItem.getId().getValue());
216 assertEquals(item.getName(), zusammenItem.getInfo().getName());
217 assertEquals(item.getDescription(), zusammenItem.getInfo().getDescription());
218 assertEquals(item.getType(), zusammenItem.getInfo().getProperty(ITEM_TYPE));
219 assertEquals(item.getProperties().get(APP_PROP_1),
220 zusammenItem.getInfo().getProperty(APP_PROP_1));
221 assertEquals(item.getProperties().get(APP_PROP_2),
222 zusammenItem.getInfo().getProperty(APP_PROP_2));
224 Map<String, Number> zusammenStatusesMap =
225 zusammenItem.getInfo().getProperty(ITEM_VERSIONS_STATUSES);
226 Map<VersionStatus, Integer> statusesMap = item.getVersionStatusCounters();
228 zusammenStatusesMap.entrySet()
229 .forEach(entry -> assertEquals(statusesMap.get(VersionStatus.valueOf(entry.getKey())), entry.getValue()));
231 assertEquals(item.getCreationTime(), zusammenItem.getCreationTime());
232 assertEquals(item.getModificationTime(), zusammenItem.getModificationTime());