1 package org.openecomp.sdc.versioning.dao.impl.zusammen;
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.item.Info;
5 import org.mockito.ArgumentCaptor;
6 import org.mockito.InjectMocks;
7 import org.mockito.Mock;
8 import org.mockito.MockitoAnnotations;
9 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
10 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
11 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
12 import org.openecomp.sdc.versioning.types.Item;
13 import org.testng.Assert;
14 import org.testng.annotations.BeforeMethod;
15 import org.testng.annotations.Test;
17 import java.util.ArrayList;
18 import java.util.Collection;
19 import java.util.Date;
20 import java.util.HashMap;
21 import java.util.Iterator;
22 import java.util.List;
24 import java.util.stream.Collectors;
25 import java.util.stream.Stream;
27 import static org.mockito.Matchers.eq;
28 import static org.mockito.Mockito.doReturn;
29 import static org.mockito.Mockito.verify;
30 import static org.openecomp.sdc.versioning.dao.impl.zusammen.TestUtil.createZusammenContext;
32 public class ItemZusammenDaoImplTest {
34 private static final String USER = "user1";
35 private static final String ITEM_TYPE = "item_type";
36 private static final String ITEM_VERSIONS_STATUSES = "item_versions_statuses";
37 private static final String APP_PROP_1 = "app_prop1";
38 private static final String APP_PROP_2 = "app_prop2";
39 private static final String tenant = "dox";
42 private ZusammenAdaptor zusammenAdaptorMock;
44 private ItemZusammenDaoImpl itemDao;
47 public void setUp() throws Exception {
48 MockitoAnnotations.initMocks(this);
49 SessionContextProviderFactory.getInstance().createInterface().create(USER, tenant);
53 public void testListWhenNone() throws Exception {
54 doReturn(new ArrayList<>()).when(zusammenAdaptorMock)
55 .listItems(eq(createZusammenContext(USER)));
57 Collection<Item> items = itemDao.list();
59 Assert.assertTrue(items.isEmpty());
63 public void testList() throws Exception {
64 Map<String, Number> vlm1versionStatuses = new HashMap<>();
65 vlm1versionStatuses.put(VersionStatus.Draft.name(), 1);
67 Map<String, Number> vsp2versionStatuses = new HashMap<>();
68 vsp2versionStatuses.put(VersionStatus.Draft.name(), 3);
69 vsp2versionStatuses.put(VersionStatus.Certified.name(), 2);
72 List<com.amdocs.zusammen.datatypes.item.Item> returnedItems = Stream.of(
73 createItem("1", "vsp1", "vsp 1", "vsp", new Date(), new Date(), new HashMap<>()),
74 createItem("2", "vlm1", "vlm 1", "vlm", new Date(), new Date(), vlm1versionStatuses),
75 createItem("3", "vsp2", "vsp 2", "vsp", new Date(), new Date(), vsp2versionStatuses))
76 .collect(Collectors.toList());
77 doReturn(returnedItems).when(zusammenAdaptorMock).listItems(eq(createZusammenContext(USER)));
79 Collection<Item> items = itemDao.list();
80 Assert.assertEquals(items.size(), 3);
82 Iterator<Item> itemIterator = items.iterator();
83 assertItemEquals(itemIterator.next(), returnedItems.get(0));
84 assertItemEquals(itemIterator.next(), returnedItems.get(1));
85 assertItemEquals(itemIterator.next(), returnedItems.get(2));
89 public void testGetNonExisting() throws Exception {
90 Item requestedItem = new Item();
91 requestedItem.setId("1");
93 Item item = itemDao.get(requestedItem);
95 Assert.assertNull(item);
99 public void testGet() throws Exception {
100 Item inputItem = new Item();
101 inputItem.setId("1");
103 Map<String, Number> versionStatuses = new HashMap<>();
104 versionStatuses.put(VersionStatus.Draft.name(), 3);
105 versionStatuses.put(VersionStatus.Certified.name(), 2);
107 com.amdocs.zusammen.datatypes.item.Item toBeReturned =
108 createItem("1", "vsp1", "vsp 1", "vsp", new Date(System.currentTimeMillis() - 100),
109 new Date(), versionStatuses);
110 doReturn(toBeReturned).when(zusammenAdaptorMock)
111 .getItem(eq(createZusammenContext(USER)), eq(new Id(inputItem.getId())));
113 Item item = itemDao.get(inputItem);
115 Assert.assertNotNull(item);
116 assertItemEquals(item, toBeReturned);
120 public void testCreate() throws Exception {
121 Item inputItem = new Item();
122 inputItem.setName("vsp1");
123 inputItem.setDescription("VSP 1");
124 inputItem.setType("vsp");
126 ArgumentCaptor<Info> capturedZusammenInfo = ArgumentCaptor.forClass(Info.class);
129 doReturn(new Id(itemId)).when(zusammenAdaptorMock)
130 .createItem(eq(createZusammenContext(USER)), capturedZusammenInfo.capture());
132 Item item = itemDao.create(inputItem);
134 Info capturedInfo = capturedZusammenInfo.getValue();
135 Assert.assertEquals(capturedInfo.getName(), inputItem.getName());
136 Assert.assertEquals(capturedInfo.getDescription(), inputItem.getDescription());
137 Assert.assertEquals(capturedInfo.getProperty(ITEM_TYPE), inputItem.getType());
138 Assert.assertEquals(capturedInfo.getProperty(ITEM_VERSIONS_STATUSES),
139 inputItem.getVersionStatusCounters());
141 Assert.assertEquals(item.getId(), itemId);
142 Assert.assertEquals(item.getName(), inputItem.getName());
143 Assert.assertEquals(item.getDescription(), inputItem.getDescription());
144 Assert.assertEquals(item.getType(), inputItem.getType());
145 Assert.assertEquals(item.getVersionStatusCounters(), inputItem.getVersionStatusCounters());
149 public void testUpdate() throws Exception {
150 Item item = new Item();
152 item.setName("vsp1");
153 item.setDescription("VSP 1");
155 item.addVersionStatus(VersionStatus.Draft);
156 item.addVersionStatus(VersionStatus.Draft);
157 item.addVersionStatus(VersionStatus.Certified);
159 ArgumentCaptor<Info> capturedZusammenInfo = ArgumentCaptor.forClass(Info.class);
161 itemDao.update(item);
163 verify(zusammenAdaptorMock)
164 .updateItem(eq(createZusammenContext(USER)), eq(new Id(item.getId())),
165 capturedZusammenInfo.capture());
167 Info capturedInfo = capturedZusammenInfo.getValue();
168 Assert.assertEquals(capturedInfo.getName(), item.getName());
169 Assert.assertEquals(capturedInfo.getDescription(), item.getDescription());
170 Assert.assertEquals(capturedInfo.getProperty(ITEM_TYPE), item.getType());
171 Assert.assertEquals(capturedInfo.getProperty(ITEM_VERSIONS_STATUSES),
172 item.getVersionStatusCounters());
175 private com.amdocs.zusammen.datatypes.item.Item createItem(String id, String name,
176 String description, String type,
178 Date modificationTime,
179 Map<String, Number> versionStatusCounters) {
180 com.amdocs.zusammen.datatypes.item.Item item = new com.amdocs.zusammen.datatypes.item.Item();
181 item.setId(new Id(id));
182 Info info = new Info();
184 info.setDescription(description);
185 info.addProperty(ITEM_TYPE, type);
186 info.addProperty(ITEM_VERSIONS_STATUSES, versionStatusCounters);
187 info.addProperty(APP_PROP_1, "app_prop1_value");
188 info.addProperty(APP_PROP_2, 8);
190 item.setCreationTime(creationTime);
191 item.setModificationTime(modificationTime);
195 private void assertItemEquals(Item item, com.amdocs.zusammen.datatypes.item.Item zusammenItem) {
196 Assert.assertEquals(item.getId(), zusammenItem.getId().getValue());
197 Assert.assertEquals(item.getName(), zusammenItem.getInfo().getName());
198 Assert.assertEquals(item.getDescription(), zusammenItem.getInfo().getDescription());
199 Assert.assertEquals(item.getType(), zusammenItem.getInfo().getProperty(ITEM_TYPE));
200 Assert.assertEquals(item.getProperties().get(APP_PROP_1),
201 zusammenItem.getInfo().getProperty(APP_PROP_1));
202 Assert.assertEquals(item.getProperties().get(APP_PROP_2),
203 zusammenItem.getInfo().getProperty(APP_PROP_2));
205 Map<String, Number> zusammenStatusesMap =
206 zusammenItem.getInfo().getProperty(ITEM_VERSIONS_STATUSES);
207 Map<VersionStatus, Integer> statusesMap = item.getVersionStatusCounters();
209 zusammenStatusesMap.entrySet().forEach(entry -> Assert
210 .assertEquals(statusesMap.get(VersionStatus.valueOf(entry.getKey())), entry.getValue()));
212 Assert.assertEquals(item.getCreationTime(), zusammenItem.getCreationTime());
213 Assert.assertEquals(item.getModificationTime(), zusammenItem.getModificationTime());