1 package org.openecomp.sdc.versioning.impl;
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
7 import org.openecomp.sdc.itempermissions.PermissionsServices;
8 import org.openecomp.sdc.notification.services.SubscriptionService;
9 import org.openecomp.sdc.versioning.dao.ItemDao;
10 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
11 import org.openecomp.sdc.versioning.types.Item;
12 import org.testng.annotations.BeforeMethod;
13 import org.testng.annotations.Test;
15 import java.util.Collection;
16 import java.util.List;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
20 import static org.mockito.Matchers.any;
21 import static org.mockito.Mockito.*;
22 import static org.testng.Assert.*;
24 public class AsdcItemManagerImplTest {
26 private static final String USER = "user1";
27 private static final String ITEM_ID = "item1";
28 private static final String ITEM_NAME = "item 1 name";
29 private static final String ITEM_TYPE_A = "A";
30 private static final String ITEM_TYPE_B = "B";
31 private static final String tenant = "dox";
33 private ItemDao itemDao;
35 private PermissionsServices permissionsServices;
37 private SubscriptionService subscriptionService;
39 private AsdcItemManagerImpl itemManager;
42 public void setUp() throws Exception {
43 MockitoAnnotations.initMocks(this);
47 public void testList() throws Exception {
48 List<Item> returnedItems = Stream.of(createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A),
49 createItem("item2", "item2 name", ITEM_TYPE_B),
50 createItem("item3", "item3 name", ITEM_TYPE_B),
51 createItem("item4", "item4 name", ITEM_TYPE_A)).collect(Collectors.toList());
52 doReturn(returnedItems).when(itemDao).list();
54 Collection<Item> items = itemManager.list(item -> ITEM_TYPE_B.equals(item.getType()));
56 assertEquals(items.size(), 2);
58 items.stream().anyMatch(item -> returnedItems.get(1).getName().equals(item.getName())));
60 items.stream().anyMatch(item -> returnedItems.get(2).getName().equals(item.getName())));
64 public void testGetNotExisting() throws Exception {
65 Item item = itemManager.get(ITEM_ID);
70 public void testGet() throws Exception {
71 Item toBeReturned = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A);
72 doReturn(toBeReturned).when(itemDao).get(any(Item.class));
74 Item item = itemManager.get(ITEM_ID);
76 assertItemEquals(item, toBeReturned);
80 public void testCreate() throws Exception {
81 SessionContextProviderFactory.getInstance().createInterface().create(USER, tenant);
83 Item returnedItem = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A);
84 doReturn(returnedItem).when(itemDao).create(any(Item.class));
86 Item inputItem = createItem(null, returnedItem.getName(), returnedItem.getType());
87 Item item = itemManager.create(inputItem);
89 assertItemEquals(item, returnedItem);
90 verify(permissionsServices).execute(ITEM_ID, USER, "Create_Item");
91 verify(subscriptionService).subscribe(USER, ITEM_ID);
95 public void testUpdateNotExistingVersionStatus() throws Exception {
96 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
98 verify(itemDao, never()).update(any(Item.class));
102 public void testUpdateVersionStatusWhenNone() throws Exception {
103 Item item = new Item();
105 doReturn(item).when(itemDao).get(any(Item.class));
107 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
109 verify(itemDao).update(item);
110 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 1);
111 assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
115 public void testUpdateVersionStatusAddFirst() throws Exception {
116 Item item = new Item();
118 doReturn(item).when(itemDao).get(any(Item.class));
120 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Draft, null);
122 verify(itemDao).update(item);
123 assertEquals(item.getVersionStatusCounters().size(), 1);
124 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 1);
128 public void testUpdateVersionStatus() throws Exception {
129 Item item = new Item();
131 item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
132 item.getVersionStatusCounters().put(VersionStatus.Draft, 3);
133 doReturn(item).when(itemDao).get(any(Item.class));
135 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
137 verify(itemDao).update(item);
138 assertEquals(item.getVersionStatusCounters().size(), 2);
139 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
140 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 2);
144 public void testUpdateVersionStatusRemoveLast() throws Exception {
145 Item item = new Item();
147 item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
148 item.getVersionStatusCounters().put(VersionStatus.Draft, 1);
149 doReturn(item).when(itemDao).get(any(Item.class));
151 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
153 verify(itemDao).update(item);
154 assertEquals(item.getVersionStatusCounters().size(), 1);
155 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
156 assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
159 private Item createItem(String id, String name, String type) {
160 Item item = new Item();
167 private void assertItemEquals(Item actual, Item expected) {
168 assertEquals(actual.getId(), expected.getId());
169 assertEquals(actual.getName(), expected.getName());
170 assertEquals(actual.getType(), expected.getType());