summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/ItemManagerImplTest.java
blob: 755bfb44429e4072a9533184dea13425cedb8f49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package org.openecomp.sdc.versioning.impl;

import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.openecomp.sdc.common.session.SessionContextProviderFactory;
import org.openecomp.sdc.itempermissions.PermissionsServices;
import org.openecomp.sdc.notification.services.SubscriptionService;
import org.openecomp.sdc.versioning.dao.ItemDao;
import org.openecomp.sdc.versioning.dao.types.VersionStatus;
import org.openecomp.sdc.versioning.types.Item;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.Collection;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

public class ItemManagerImplTest {

  @Mock
  private ItemDao itemDao;
  @Mock
  private PermissionsServices permissionsServices;
  @Mock
  private SubscriptionService subscriptionService;
  @InjectMocks
  private ItemManagerImpl itemManager;

  @BeforeMethod
  public void setUp() throws Exception {
    MockitoAnnotations.initMocks(this);
  }

  @Test
  public void testList() throws Exception {
    doReturn(Stream.of(
        createItem("item1", "A"),
        createItem("item2", "B"),
        createItem("item3", "B"),
        createItem("item4", "A"))
        .collect(Collectors.toList())).when(itemDao).list();

    Collection<Item> items = itemManager.list(item -> "B".equals(item.getType()));
    Assert.assertEquals(items.size(), 2);
    Assert.assertTrue(items.stream().anyMatch(item -> "item2".equals(item.getName())));
    Assert.assertTrue(items.stream().anyMatch(item -> "item3".equals(item.getName())));
  }

  @Test
  public void testGetNotExisting() throws Exception {
    Item item = itemManager.get("item1");
    Assert.assertNull(item);
  }

  @Test
  public void testGet() throws Exception {
    Item toBeReturned = new Item();
    toBeReturned.setId("itemId");
    doReturn(toBeReturned).when(itemDao).get(any(Item.class));

    Item item = itemManager.get("itemId");
    Assert.assertEquals(item.getId(), "itemId");
  }

  @Test
  public void testCreate() throws Exception {
    SessionContextProviderFactory.getInstance().createInterface().create("user1");

    Item toBeReturned = new Item();
    toBeReturned.setId("itemId");
    doReturn(toBeReturned).when(itemDao).create(any(Item.class));

    Item item = itemManager.create(createItem("item1", "A"));
    Assert.assertEquals(item.getId(), "itemId");
  }

  @Test
  public void testUpdateNotExistingVersionStatus() throws Exception {
    itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
    verify(itemDao, never()).update(any(Item.class));
  }

  @Test
  public void testUpdateVersionStatusWhenNone() throws Exception {
    Item item = new Item();
    item.setId("itemId");
    doReturn(item).when(itemDao).get(any(Item.class));

    itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
    verify(itemDao).update(item);
    Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 1);
    Assert.assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft));
  }

  @Test
  public void testUpdateVersionStatus() throws Exception {
    Item item = new Item();
    item.setId("itemId");
    item.getVersionStatusCounters().put(VersionStatus.Certified, 2);
    item.getVersionStatusCounters().put(VersionStatus.Draft, 5);
    doReturn(item).when(itemDao).get(any(Item.class));

    itemManager.updateVersionStatus("itemId", VersionStatus.Certified, VersionStatus.Draft);
    verify(itemDao).update(item);
    Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3);
    Assert.assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 4);
  }

  private Item createItem(String name, String type) {
    Item item = new Item();
    item.setId(name);
    item.setName(name);
    item.setType(type);
    return item;
  }

}