Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-sdc-versioning-lib / openecomp-sdc-versioning-core / src / test / java / org / openecomp / sdc / versioning / impl / ItemManagerImplTest.java
1 package org.openecomp.sdc.versioning.impl;
2
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.Assert;
13 import org.testng.annotations.BeforeMethod;
14 import org.testng.annotations.Test;
15
16 import java.util.Collection;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
19
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
25 public class ItemManagerImplTest {
26
27   @Mock
28   private ItemDao itemDao;
29   @Mock
30   private PermissionsServices permissionsServices;
31   @Mock
32   private SubscriptionService subscriptionService;
33   @InjectMocks
34   private ItemManagerImpl itemManager;
35
36   @BeforeMethod
37   public void setUp() throws Exception {
38     MockitoAnnotations.initMocks(this);
39   }
40
41   @Test
42   public void testList() throws Exception {
43     doReturn(Stream.of(
44         createItem("item1", "A"),
45         createItem("item2", "B"),
46         createItem("item3", "B"),
47         createItem("item4", "A"))
48         .collect(Collectors.toList())).when(itemDao).list();
49
50     Collection<Item> items = itemManager.list(item -> "B".equals(item.getType()));
51     Assert.assertEquals(items.size(), 2);
52     Assert.assertTrue(items.stream().anyMatch(item -> "item2".equals(item.getName())));
53     Assert.assertTrue(items.stream().anyMatch(item -> "item3".equals(item.getName())));
54   }
55
56   @Test
57   public void testGetNotExisting() throws Exception {
58     Item item = itemManager.get("item1");
59     Assert.assertNull(item);
60   }
61
62   @Test
63   public void testGet() throws Exception {
64     Item toBeReturned = new Item();
65     toBeReturned.setId("itemId");
66     doReturn(toBeReturned).when(itemDao).get(any(Item.class));
67
68     Item item = itemManager.get("itemId");
69     Assert.assertEquals(item.getId(), "itemId");
70   }
71
72   @Test
73   public void testCreate() throws Exception {
74     SessionContextProviderFactory.getInstance().createInterface().create("user1");
75
76     Item toBeReturned = new Item();
77     toBeReturned.setId("itemId");
78     doReturn(toBeReturned).when(itemDao).create(any(Item.class));
79
80     Item item = itemManager.create(createItem("item1", "A"));
81     Assert.assertEquals(item.getId(), "itemId");
82   }
83
84   @Test
85   public void testUpdateNotExistingVersionStatus() throws Exception {
86     itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
87     verify(itemDao, never()).update(any(Item.class));
88   }
89
90   @Test
91   public void testUpdateVersionStatusWhenNone() throws Exception {
92     Item item = new Item();
93     item.setId("itemId");
94     doReturn(item).when(itemDao).get(any(Item.class));
95
96     itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
97     verify(itemDao).update(item);
98     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 1);
99     Assert.assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
100   }
101
102   @Test
103   public void testUpdateVersionStatus() throws Exception {
104     Item item = new Item();
105     item.setId("itemId");
106     item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
107     item.getVersionStatusCounters().put(VersionStatus.Draft, 5);
108     doReturn(item).when(itemDao).get(any(Item.class));
109
110     itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
111     verify(itemDao).update(item);
112     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
113     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 4);
114   }
115
116   private Item createItem(String name, String type) {
117     Item item = new Item();
118     item.setId(name);
119     item.setName(name);
120     item.setType(type);
121     return item;
122   }
123
124 }