afffd4794369e0f5fecdbf801a3191b920ddd9ed
[sdc.git] /
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 testUpdateVersionStatusAddFirst() throws Exception {
104     Item item = new Item();
105     item.setId("itemId");
106     doReturn(item).when(itemDao).get(any(Item.class));
107
108     itemManager.updateVersionStatus("itemId", VersionStatus.Draft, null);
109
110     verify(itemDao).update(item);
111     Assert.assertEquals(item.getVersionStatusCounters().size(), 1);
112     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 1);
113   }
114
115   @Test
116   public void testUpdateVersionStatus() throws Exception {
117     Item item = new Item();
118     item.setId("itemId");
119     item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
120     item.getVersionStatusCounters().put(VersionStatus.Draft, 3);
121     doReturn(item).when(itemDao).get(any(Item.class));
122
123     itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
124
125     verify(itemDao).update(item);
126     Assert.assertEquals(item.getVersionStatusCounters().size(), 2);
127     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
128     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 2);
129   }
130
131   @Test
132   public void testUpdateVersionStatusRemoveLast() throws Exception {
133     Item item = new Item();
134     item.setId("itemId");
135     item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
136     item.getVersionStatusCounters().put(VersionStatus.Draft, 1);
137     doReturn(item).when(itemDao).get(any(Item.class));
138
139     itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
140
141     verify(itemDao).update(item);
142     Assert.assertEquals(item.getVersionStatusCounters().size(), 1);
143     Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
144     Assert.assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
145   }
146
147   private Item createItem(String name, String type) {
148     Item item = new Item();
149     item.setId(name);
150     item.setName(name);
151     item.setType(type);
152     return item;
153   }
154
155 }