Fix for radio buttons
[sdc.git] / ui-ci-dev / src / main / java / org / openecomp / sdc / uici / tests / execute / vfc / VfcBasicTests.java
1 package org.openecomp.sdc.uici.tests.execute.vfc;
2
3 import static org.testng.AssertJUnit.assertTrue;
4
5 import java.util.List;
6 import java.util.function.Function;
7 import java.util.function.Supplier;
8
9 import org.apache.commons.collections.CollectionUtils;
10 import org.apache.http.HttpStatus;
11 import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum;
12 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum;
13 import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest;
14 import org.openecomp.sdc.uici.tests.utilities.FileHandling;
15 import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils;
16 import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils;
17 import org.openecomp.sdc.uici.tests.utilities.RestCDUtils;
18 import org.openecomp.sdc.uici.tests.verificator.VfVerificator;
19 import org.openqa.selenium.WebElement;
20 import org.openqa.selenium.support.ui.Select;
21 import org.testng.annotations.Test;
22
23 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
24 import org.openecomp.sdc.common.datastructure.FunctionalInterfaces;
25
26 public class VfcBasicTests extends SetupCDTest {
27
28         @Test
29         public void testRequirementsAndCapabilitiesSectionOfVfc() {
30                 String filePath = FileHandling.getResourcesFilesPath();
31                 String fileName = "mycompute.yml";
32                 ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
33                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.REQUIREMENTS_AND_CAPABILITIES);
34                 // all expected requirements
35                 assertTrue("Not all expected requirements are displayed.",
36                                 GeneralUIUtils.isElementPresent("dependency") && GeneralUIUtils.isElementPresent("local_storage"));
37                 // filter requirements
38                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ReqAndCapabilitiesSection.SEARCH_BOX.getValue())
39                                 .sendKeys("root");
40                 Supplier<Boolean> supplier = () -> !GeneralUIUtils.isElementPresent("local_storage");
41                 Function<Boolean, Boolean> resultVerifier = isNotPresent -> isNotPresent;
42                 Boolean isFilteredRowNotPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
43                 assertTrue("The new property was not inserted to the properties table.", isFilteredRowNotPresent);
44                 assertTrue("Filter problem.", GeneralUIUtils.isElementPresent("dependency") && isFilteredRowNotPresent);
45                 // move to cap tab
46                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ReqAndCapabilitiesSection.CAP_TAB.getValue()).click();
47                 GeneralUIUtils.getWebElementWaitForVisible("endpoint").click();
48                 GeneralUIUtils.getWebElementWaitForVisible("initiator").click();
49                 supplier = () -> GeneralUIUtils.isElementPresent(DataTestIdEnum.PropertyForm.FORM_CONTAINER.getValue());
50                 resultVerifier = isPresent -> isPresent;
51                 Boolean isPopupOpen = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
52                 assertTrue("The update property popup was not opened.", isPopupOpen);
53         }
54
55         @Test
56         public void testCreatePropertyTypeListForVfc() {
57                 String filePath = FileHandling.getResourcesFilesPath();
58                 String fileName = "VFCWithAttributes.yml";
59                 ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
60                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.PROPERTIES);
61                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertiesSection.ADD_BUTTON.getValue()).click();
62                 // fill in fields
63                 String newPropName = "listProperty";
64                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.NAME_FIELD.getValue())
65                                 .sendKeys(newPropName);
66                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DESCRIPTION_FIELD.getValue())
67                                 .sendKeys("desc");
68                 Select typeField = new Select(
69                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.TYPE_FIELD.getValue()));
70                 typeField.selectByVisibleText("list");
71                 Select schemaTypeField = new Select(
72                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SCHEMA_FIELD.getValue()));
73                 schemaTypeField.selectByVisibleText("string");
74                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.LIST_TYPE_DEFAULT_VAL_FIELD.getValue())
75                                 .sendKeys("first");
76                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.ADD_ITEM_TO_LIST_BUTTON.getValue())
77                                 .click();
78                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.LIST_TYPE_DEFAULT_VAL_FIELD.getValue())
79                                 .sendKeys("second");
80                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.ADD_ITEM_TO_LIST_BUTTON.getValue())
81                                 .click();
82                 // save
83                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SAVE_BUTTON.getValue()).click();
84                 Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newPropName);
85                 Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent;
86                 Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
87                 assertTrue("The new property was not inserted to the properties table.", isPresent);
88         }
89
90         @Test
91         public void testCreatePropertyTypeMapForVfc() {
92                 String filePath = FileHandling.getResourcesFilesPath();
93                 String fileName = "VFCWithAttributes.yml";
94                 ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
95                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.PROPERTIES);
96                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertiesSection.ADD_BUTTON.getValue()).click();
97                 // fill in fields
98                 String newPropName = "mapProperty";
99                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.NAME_FIELD.getValue())
100                                 .sendKeys(newPropName);
101                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DESCRIPTION_FIELD.getValue())
102                                 .sendKeys("desc");
103                 Select typeField = new Select(
104                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.TYPE_FIELD.getValue()));
105                 typeField.selectByVisibleText("map");
106                 Select schemaTypeField = new Select(
107                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SCHEMA_FIELD.getValue()));
108                 schemaTypeField.selectByVisibleText("string");
109                 // insert item to map
110                 GeneralUIUtils
111                                 .getWebElementWaitForVisible(
112                                                 DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_KEY_FIELD_FOR_FIRST_ITEM.getValue())
113                                 .sendKeys("key1");
114                 GeneralUIUtils
115                                 .getWebElementWaitForVisible(
116                                                 DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_VALUE_FIELD_FOR_FIRST_ITEM.getValue())
117                                 .sendKeys("val1");
118                 // insert item to map
119                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.ADD_ITEM_TO_MAP_BUTTON.getValue())
120                                 .click();
121                 GeneralUIUtils
122                                 .getWebElementWaitForVisible(
123                                                 DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_KEY_FIELD_FOR_SECOND_ITEM.getValue())
124                                 .sendKeys("key2");
125                 GeneralUIUtils
126                                 .getWebElementWaitForVisible(
127                                                 DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_VALUE_FIELD_FOR_SECOND_ITEM.getValue())
128                                 .sendKeys("val2");
129                 // delete item from map
130                 GeneralUIUtils
131                                 .getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DELETE_FIRST_ITEM_FROM_MAP_BUTTON.getValue())
132                                 .click();
133                 // save
134                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SAVE_BUTTON.getValue()).click();
135                 Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newPropName);
136                 Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent;
137                 Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
138                 assertTrue("The new property was not inserted to the properties table.", isPresent);
139         }
140
141         @Test
142         public void testCreatePropertyTypeDTForVfc() {
143                 String filePath = FileHandling.getResourcesFilesPath();
144                 String fileName = "VFCWithAttributes.yml";
145                 ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
146                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.PROPERTIES);
147                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertiesSection.ADD_BUTTON.getValue()).click();
148                 // fill in fields
149                 String newPropName = "dt";
150                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.NAME_FIELD.getValue())
151                                 .sendKeys(newPropName);
152                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DESCRIPTION_FIELD.getValue())
153                                 .sendKeys("desc");
154                 Select typeField = new Select(
155                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.TYPE_FIELD.getValue()));
156                 typeField.selectByValue("org.openecomp.datatypes.heat.contrail.network.rule.PortPairs");
157                 GeneralUIUtils
158                                 .getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.START_PORT_FIELD_FOR_PORT_PAIRS_DT.getValue())
159                                 .sendKeys("first");
160                 // save
161                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SAVE_BUTTON.getValue()).click();
162                 Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newPropName);
163                 Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent;
164                 Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
165                 assertTrue("The new property was not inserted to the properties table.", isPresent);
166         }
167
168         @Test
169         public void testViewAttributesTabForVfc() {
170                 String filePath = FileHandling.getResourcesFilesPath();
171                 String fileName = "VFCWithAttributes.yml";
172                 ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
173                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES);
174
175                 List<WebElement> attributesRows = GeneralUIUtils
176                                 .getWebElementsListWaitForVisible(DataTestIdEnum.AttributesSection.TABLE_ROWS.getValue());
177                 assertTrue("There is not any row in the table.", !CollectionUtils.isEmpty(attributesRows));
178                 // display editable buttons
179                 assertTrue("The Add button is not dispaly.",
180                                 GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.ADD_BUTTON.getValue()));
181                 assertTrue("The Edit button is not dispaly for 'network' attribute.", GeneralUIUtils
182                                 .isElementPresent(DataTestIdEnum.AttributesSection.EDIT_BUTTON_FOR_NETWORK_ATTR.getValue()));
183                 assertTrue("The Remove button is not dispaly for 'network' attribute.", GeneralUIUtils
184                                 .isElementPresent(DataTestIdEnum.AttributesSection.DELETE_BUTTON_FOR_NETWORK_ATTR.getValue()));
185                 // click checkin
186                 GeneralUIUtils.checkIn();
187                 // enter again
188                 GeneralUIUtils.getWebElementWaitForVisible(importVfcResourceInUI.getName()).click();
189                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES);
190                 // the editable buttons disappear
191                 assertTrue("The Add button is not dispaly.",
192                                 !GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.ADD_BUTTON.getValue()));
193                 assertTrue("The Edit button is not dispaly for 'network' attribute.", !GeneralUIUtils
194                                 .isElementPresent(DataTestIdEnum.AttributesSection.EDIT_BUTTON_FOR_NETWORK_ATTR.getValue()));
195                 assertTrue("The Remove button is not dispaly for 'network' attribute.", !GeneralUIUtils
196                                 .isElementPresent(DataTestIdEnum.AttributesSection.DELETE_BUTTON_FOR_NETWORK_ATTR.getValue()));
197         }
198
199         @Test
200         public void testCreateAttributeForVfc() {
201                 String filePath = FileHandling.getResourcesFilesPath();
202                 String fileName = "VFCWithAttributes.yml";
203                 ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
204                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES);
205                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributesSection.ADD_BUTTON.getValue()).click();
206                 // fill in fields
207                 String newAttrName = "attr";
208                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.NAME_FIELD.getValue())
209                                 .sendKeys(newAttrName);
210                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DESCRIPTION_FIELD.getValue())
211                                 .sendKeys("desc");
212                 Select typeField = new Select(
213                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.TYPE_FIELD.getValue()));
214                 typeField.selectByVisibleText("integer");
215                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DEFAULT_VAL_FIELD.getValue())
216                                 .sendKeys("2");
217                 // click ok
218                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DONE_BUTTON.getValue()).click();
219                 Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newAttrName);
220                 Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent;
221                 Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
222                 assertTrue("The new attribute was not inserted to the attributes table.", isPresent);
223         }
224
225         @Test
226         public void testUpdateTypeForAttributeOfVfc() {
227                 String filePath = FileHandling.getResourcesFilesPath();
228                 String fileName = "VFCWithAttributes.yml";
229                 ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
230                 VfVerificator.verifyResourceIsCreated(importVfcResourceInUI);
231                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES);
232                 GeneralUIUtils
233                                 .getWebElementWaitForVisible(DataTestIdEnum.AttributesSection.EDIT_BUTTON_FOR_NETWORK_ATTR.getValue())
234                                 .click();
235                 // fill in fields
236                 Select typeField = new Select(
237                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.TYPE_FIELD.getValue()));
238                 typeField.selectByVisibleText("float");
239                 // click ok
240                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DONE_BUTTON.getValue()).click();
241                 Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent("float");
242                 Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent;
243                 Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier);
244                 assertTrue("The attribute type was not updated.", isPresent);
245         }
246
247         @Test
248         public void testDeleteAttributeForVfc() {
249                 String filePath = FileHandling.getResourcesFilesPath();
250                 String fileName = "VFCWithAttributes.yml";
251                 ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
252                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES);
253                 GeneralUIUtils
254                                 .getWebElementWaitForVisible(DataTestIdEnum.AttributesSection.DELETE_BUTTON_FOR_NETWORK_ATTR.getValue())
255                                 .click();
256                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.OK.getValue()).click();
257                 GeneralUIUtils.waitForLoader();
258                 Boolean retryResult = FunctionalInterfaces
259                                 .retryMethodOnResult(() -> !GeneralUIUtils.isElementPresent("networks"), boolResult -> boolResult);
260                 assertTrue("The attribute is shown in the attributes table.", retryResult);
261         }
262
263         @Test
264         public void testImportVfc() {
265                 String filePath = FileHandling.getResourcesFilesPath();
266                 String fileName = "CP.yml";
267                 ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
268                 assertTrue(RestCDUtils.getResource(importVfcResourceInUI).getErrorCode() == HttpStatus.SC_OK);
269         }
270 }