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.doReturn;
22 import static org.mockito.Mockito.never;
23 import static org.mockito.Mockito.verify;
24 import static org.testng.Assert.assertEquals;
25 import static org.testng.Assert.assertNull;
26 import static org.testng.Assert.assertTrue;
28 public class ItemManagerImplTest {
30 private static final String USER = "user1";
31 private static final String ITEM_ID = "item1";
32 private static final String ITEM_NAME = "item 1 name";
33 private static final String ITEM_TYPE_A = "A";
34 private static final String ITEM_TYPE_B = "B";
36 private ItemDao itemDao;
38 private PermissionsServices permissionsServices;
40 private SubscriptionService subscriptionService;
42 private ItemManagerImpl itemManager;
45 public void setUp() throws Exception {
46 MockitoAnnotations.initMocks(this);
50 public void testList() throws Exception {
51 List<Item> returnedItems = Stream.of(createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A),
52 createItem("item2", "item2 name", ITEM_TYPE_B),
53 createItem("item3", "item3 name", ITEM_TYPE_B),
54 createItem("item4", "item4 name", ITEM_TYPE_A)).collect(Collectors.toList());
55 doReturn(returnedItems).when(itemDao).list();
57 Collection<Item> items = itemManager.list(item -> ITEM_TYPE_B.equals(item.getType()));
59 assertEquals(items.size(), 2);
61 items.stream().anyMatch(item -> returnedItems.get(1).getName().equals(item.getName())));
63 items.stream().anyMatch(item -> returnedItems.get(2).getName().equals(item.getName())));
67 public void testGetNotExisting() throws Exception {
68 Item item = itemManager.get(ITEM_ID);
73 public void testGet() throws Exception {
74 Item toBeReturned = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A);
75 doReturn(toBeReturned).when(itemDao).get(any(Item.class));
77 Item item = itemManager.get(ITEM_ID);
79 assertItemEquals(item, toBeReturned);
83 public void testCreate() throws Exception {
84 SessionContextProviderFactory.getInstance().createInterface().create(USER);
86 Item returnedItem = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A);
87 doReturn(returnedItem).when(itemDao).create(any(Item.class));
89 Item inputItem = createItem(null, returnedItem.getName(), returnedItem.getType());
90 Item item = itemManager.create(inputItem);
92 assertItemEquals(item, returnedItem);
93 verify(permissionsServices).execute(ITEM_ID, USER, "Create_Item");
94 verify(subscriptionService).subscribe(USER, ITEM_ID);
98 public void testUpdateNotExistingVersionStatus() throws Exception {
99 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
101 verify(itemDao, never()).update(any(Item.class));
105 public void testUpdateVersionStatusWhenNone() throws Exception {
106 Item item = new Item();
108 doReturn(item).when(itemDao).get(any(Item.class));
110 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
112 verify(itemDao).update(item);
113 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 1);
114 assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
118 public void testUpdateVersionStatusAddFirst() throws Exception {
119 Item item = new Item();
121 doReturn(item).when(itemDao).get(any(Item.class));
123 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Draft, null);
125 verify(itemDao).update(item);
126 assertEquals(item.getVersionStatusCounters().size(), 1);
127 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 1);
131 public void testUpdateVersionStatus() throws Exception {
132 Item item = new Item();
134 item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
135 item.getVersionStatusCounters().put(VersionStatus.Draft, 3);
136 doReturn(item).when(itemDao).get(any(Item.class));
138 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
140 verify(itemDao).update(item);
141 assertEquals(item.getVersionStatusCounters().size(), 2);
142 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
143 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 2);
147 public void testUpdateVersionStatusRemoveLast() throws Exception {
148 Item item = new Item();
150 item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
151 item.getVersionStatusCounters().put(VersionStatus.Draft, 1);
152 doReturn(item).when(itemDao).get(any(Item.class));
154 itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft);
156 verify(itemDao).update(item);
157 assertEquals(item.getVersionStatusCounters().size(), 1);
158 assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
159 assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
162 private Item createItem(String id, String name, String type) {
163 Item item = new Item();
170 private void assertItemEquals(Item actual, Item expected) {
171 assertEquals(actual.getId(), expected.getId());
172 assertEquals(actual.getName(), expected.getName());
173 assertEquals(actual.getType(), expected.getType());