re base code
[sdc.git] / catalog-model / src / test / java / org / openecomp / sdc / be / model / jsontitan / operations / GroupsOperationTest.java
1 package org.openecomp.sdc.be.model.jsontitan.operations;
2
3 import fj.data.Either;
4 import org.junit.After;
5 import org.junit.Before;
6 import org.junit.BeforeClass;
7 import org.junit.Test;
8 import org.junit.runner.RunWith;
9 import org.openecomp.sdc.be.dao.config.TitanSpringConfig;
10 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
11 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
12 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
13 import org.openecomp.sdc.be.model.*;
14 import org.openecomp.sdc.be.model.config.ModelOperationsSpringConfig;
15 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
16 import org.springframework.beans.factory.annotation.Autowired;
17 import org.springframework.test.context.ContextConfiguration;
18 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
19
20 import java.util.List;
21
22 import static java.util.Arrays.asList;
23 import static org.assertj.core.api.Assertions.assertThat;
24
25
26 @RunWith(SpringJUnit4ClassRunner.class)
27 @ContextConfiguration(classes = {TitanSpringConfig.class, ModelOperationsSpringConfig.class})
28 public class GroupsOperationTest extends ModelTestBase {
29
30     @Autowired
31     private GroupsOperation groupsOperation;
32
33     @Autowired
34     TitanDao titanDao;
35
36     @Autowired
37     private ToscaOperationFacade toscaOperationFacade;
38     private Component container;
39
40     @BeforeClass
41     public static void initClass() {
42         ModelTestBase.init();
43     }
44
45     @Before
46     public void setUp() throws Exception {
47         container = new Resource();
48         container.setUniqueId(CONTAINER_ID);
49         Either<GraphVertex, TitanOperationStatus> createdCmpt = titanDao.createVertex(createBasicContainerGraphVertex());
50         assertThat(createdCmpt.isLeft()).isTrue();
51
52     }
53
54     @After
55     public void tearDown() throws Exception {
56         titanDao.rollback();
57     }
58
59     @Test
60     public void addGroups_whenContainerHasNoGroups_associateContainerWithGroup() {
61         GroupDefinition g1 = createGroupDefinition("g1");
62         GroupDefinition g2 = createGroupDefinition("g2");
63         Either<List<GroupDefinition>, StorageOperationStatus> createGroups = groupsOperation.addGroups(container, asList(g1, g2));
64         assertThat(createGroups.isLeft()).isTrue();
65
66         ComponentParametersView getGroupsFilter = new ComponentParametersView(true);
67         getGroupsFilter.setIgnoreGroups(false);
68         Component cmptWithGroups = toscaOperationFacade.getToscaElement(CONTAINER_ID, getGroupsFilter).left().value();
69         assertThat(cmptWithGroups.getGroups())
70                 .usingElementComparatorOnFields("name", "uniqueId")
71                 .containsExactlyInAnyOrder(g1, g2);
72     }
73
74     @Test
75     public void addGroups_whenContainerHasGroups_addTheGivenGroupsToTheGroupsList() {
76         GroupDefinition g1 = createGroupDefinition("g1");
77         GroupDefinition g2 = createGroupDefinition("g2");
78         groupsOperation.addGroups(container, asList(g1, g2)).left().value();
79
80         GroupDefinition g3 = createGroupDefinition("g3");
81         GroupDefinition g4 = createGroupDefinition("g4");
82
83         groupsOperation.addGroups(container, asList(g3, g4)).left().value();
84
85         ComponentParametersView getGroupsFilter = new ComponentParametersView(true);
86         getGroupsFilter.setIgnoreGroups(false);
87         Component cmptWithGroups = toscaOperationFacade.getToscaElement(CONTAINER_ID, getGroupsFilter).left().value();
88         assertThat(cmptWithGroups.getGroups())
89                 .usingElementComparatorOnFields("name", "uniqueId")
90                 .containsExactlyInAnyOrder(g1, g2, g3, g4);
91
92     }
93
94     private GroupDefinition createGroupDefinition(String id) {
95         GroupDefinition groupDefinition = new GroupDefinition();
96         groupDefinition.setUniqueId(id);
97         groupDefinition.setName("name" + id);
98         return groupDefinition;
99     }
100
101
102 }