[SDC-29] rebase continue work to align source
[sdc.git] / ui-ci-dev / src / main / java / org / openecomp / sdc / uici / tests / utilities / ResourceUIUtils.java
1 package org.openecomp.sdc.uici.tests.utilities;
2
3 import static org.openecomp.sdc.common.datastructure.FunctionalInterfaces.retryMethodOnException;
4
5 import java.util.ArrayList;
6 import java.util.List;
7 import java.util.Random;
8 import java.util.function.Function;
9 import java.util.function.Supplier;
10
11 import org.apache.commons.lang3.tuple.ImmutablePair;
12 import org.json.simple.JSONArray;
13 import org.json.simple.JSONObject;
14 import org.json.simple.JSONValue;
15 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum;
16 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.Dashboard;
17 import org.openqa.selenium.By;
18 import org.openqa.selenium.Keys;
19 import org.openqa.selenium.WebElement;
20 import org.openqa.selenium.support.ui.ExpectedConditions;
21 import org.openqa.selenium.support.ui.WebDriverWait;
22
23 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
24 import org.openecomp.sdc.be.model.LifecycleStateEnum;
25 import org.openecomp.sdc.be.model.Resource;
26 import org.openecomp.sdc.be.model.User;
27 import org.openecomp.sdc.ci.tests.datatypes.ComponentReqDetails;
28 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
29 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
30 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
31 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
32 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
33 import org.openecomp.sdc.common.datastructure.FunctionalInterfaces;
34
35 public final class ResourceUIUtils {
36         public static final String RESOURCE_NAME_PREFIX = "ResourceCDTest-";
37         protected static final boolean IS_BEFORE_TEST = true;
38         public static final String INITIAL_VERSION = "0.1";
39         public static final String ICON_RESOURCE_NAME = "call_controll";
40         protected static final String UPDATED_RESOURCE_ICON_NAME = "objectStorage";
41
42         private ResourceUIUtils() {
43         }
44
45         public static void defineResourceName(String resourceName) {
46
47                 WebElement resourceNameTextbox = GeneralUIUtils.getDriver().findElement(By.name("componentName"));
48                 resourceNameTextbox.clear();
49                 resourceNameTextbox.sendKeys(resourceName);
50         }
51
52         public static void defineResourceCategory(String category, String datatestsid) {
53
54                 GeneralUIUtils.getSelectList(category, datatestsid);
55         }
56
57         public static void importFileWithSendKeyBrowse(String FilePath, String FileName) throws Exception {
58                 WebElement browsebutton = GeneralUIUtils.getWebElementWaitForVisible("browseButton");
59                 browsebutton.sendKeys(FilePath + FileName);
60         }
61
62         public static void defineTagsList(ResourceReqDetails resource, String[] resourceTags) {
63                 List<String> taglist = new ArrayList<String>();
64                 ;
65                 WebElement resourceTagsTextbox = GeneralUIUtils.getWebElementWaitForVisible("i-sdc-tag-input");
66                 for (String tag : resourceTags) {
67                         resourceTagsTextbox.clear();
68                         resourceTagsTextbox.sendKeys(tag);
69                         resourceTagsTextbox.sendKeys(Keys.ENTER);
70                         taglist.add(tag);
71                 }
72                 resource.setTags(taglist);
73         }
74
75         public static void defineVendorRelease(String resourceVendorRelease) {
76
77                 WebElement resourceVendorReleaseTextbox = GeneralUIUtils.getWebElementWaitForVisible("vendorRelease");
78                 resourceVendorReleaseTextbox.clear();
79                 resourceVendorReleaseTextbox.sendKeys(resourceVendorRelease);
80         }
81
82         public static void defineProjectCode(String projectCode) {
83
84                 WebElement resourceNameTextbox = GeneralUIUtils.getDriver().findElement(By.name("projectCode"));
85                 resourceNameTextbox.clear();
86                 resourceNameTextbox.sendKeys(projectCode);
87         }
88
89         public static void clickButton(String selectButton) {
90
91                 WebElement clickButton = GeneralUIUtils.getDriver()
92                                 .findElement(By.xpath("//*[@data-tests-id='" + selectButton + "']"));
93                 clickButton.click();
94         }
95
96         public static WebElement Waitfunctionforbuttons(String element, int timeout) {
97                 WebDriverWait wait = new WebDriverWait(GeneralUIUtils.getDriver(), timeout);
98                 return wait.until(ExpectedConditions.elementToBeClickable(By.xpath(element)));
99         }
100
101         // coded by teddy
102         public static void fillGeneralInformationPage(ResourceReqDetails resource, User user) {
103                 try {
104                         resource.setContactId(user.getUserId());
105                         resource.setCreatorUserId(user.getUserId());
106                         resource.setCreatorFullName(user.getFullName());
107                         defineResourceName(resource.getName());
108                         defineResourceCategory(resource.getCategories().get(0).getSubcategories().get(0).getName(),
109                                         "selectGeneralCategory");
110                         GeneralUIUtils.defineDescription(resource.getDescription());
111                         GeneralUIUtils.defineVendorName(resource.getVendorName());
112                         defineVendorRelease(resource.getVendorRelease());
113                         defineTagsList(resource, new String[] { resource.getName() });
114                         GeneralUIUtils.defineUserId(resource.getCreatorUserId());
115                 } catch (Exception e) {
116                         throw new RuntimeException(e);
117                 }
118         }
119
120         public static ResourceReqDetails createResourceInUI(User user) {
121                 ResourceReqDetails defineResourceDetails = defineResourceDetails();
122                 GeneralUIUtils.clickAddComponent(DataTestIdEnum.Dashboard.BUTTON_ADD_VF);
123
124                 GeneralUIUtils.waitForLoader();
125                 fillGeneralInformationPage(defineResourceDetails, user);
126                 GeneralUIUtils.clickCreateButton();
127                 return defineResourceDetails;
128
129         }
130
131         @SuppressWarnings("deprecation")
132         private static void openImportWithFile(String filePath, String fileName, Dashboard elementType) {
133                 Runnable openImportTask = () -> {
134                         GeneralUIUtils.moveToHTMLElementByDataTestId(Dashboard.IMPORT_AREA.getValue());
135                         WebElement imoprtVFButton = GeneralUIUtils.getWebElementByDataTestId(elementType.getValue());
136                         imoprtVFButton.sendKeys(filePath + fileName);
137                 };
138                 retryMethodOnException(openImportTask);
139
140         }
141
142         public static ResourceReqDetails importVfcInUI(User user, String filePath, String fileName) {
143                 ResourceReqDetails defineResourceDetails = defineResourceDetails();
144                 openImportWithFile(filePath, fileName, DataTestIdEnum.Dashboard.IMPORT_VFC_FILE);
145                 // Fill the general page fields.
146                 GeneralUIUtils.waitForLoader();
147                 fillGeneralInformationPage(defineResourceDetails, user);
148                 GeneralUIUtils.clickCreateButton();
149                 return defineResourceDetails;
150         }
151
152         /**
153          * Import VF
154          * 
155          * @param user
156          * @param filePath
157          * @param fileName
158          * @return
159          */
160         public static ResourceReqDetails importVfInUI(User user, String filePath, String fileName) {
161                 ResourceReqDetails defineResourceDetails = defineResourceDetails();
162                 openImportWithFile(filePath, fileName, DataTestIdEnum.Dashboard.IMPORT_VF_FILE);
163                 // Fill the general page fields.
164                 GeneralUIUtils.waitForLoader();
165                 fillGeneralInformationPage(defineResourceDetails, user);
166
167                 GeneralUIUtils.clickSaveButton();
168
169                 return defineResourceDetails;
170         }
171
172         public static ResourceReqDetails importVfInUIWithoutCheckin(User user, String filePath, String fileName) {
173                 ResourceReqDetails defineResourceDetails = defineResourceDetails();
174                 openImportWithFile(filePath, fileName, DataTestIdEnum.Dashboard.IMPORT_VF_FILE);
175                 // Fill the general page fields.
176                 GeneralUIUtils.waitForLoader();
177                 fillGeneralInformationPage(defineResourceDetails, user);
178                 GeneralUIUtils.clickSaveButton();
179                 GeneralUIUtils.waitForLoader(40);
180                 // String okButtonId=DataTestIdEnum.ModalItems.OK.getValue();
181                 // ResourceUIUtils.clickButton(okButtonId);
182                 // ResourceUIUtils.Waitfunctionforbuttons("//*[@data-tests-id='"+okButtonId+"']",10);
183                 // ResourceUIUtils.clickButton(okButtonId);
184                 return defineResourceDetails;
185         }
186
187         public static ResourceReqDetails importVfFromOnBoardingModalWithoutCheckin(User user, String fileName) {
188                 ResourceReqDetails defineResourceDetails = defineResourceDetails();
189                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.OPEN_MODAL_BUTTON.getValue()).click();
190                 GeneralUIUtils.getWebElementWaitForVisible(fileName).click();
191                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.IMPORT_ICON.getValue()).click();
192
193                 // Fill the general page fields.
194                 GeneralUIUtils.waitForLoader();
195                 GeneralUIUtils.clickSaveButton();
196                 GeneralUIUtils.waitForLoader();
197                 return defineResourceDetails;
198         }
199
200         @SuppressWarnings("deprecation")
201         public static void updateVfCsar(String filePath, String fileName) {
202                 retryMethodOnException(
203                                 () -> GeneralUIUtils.getWebElementByDataTestId(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue())
204                                                 .sendKeys(filePath + fileName));
205                 GeneralUIUtils.clickSaveButton();
206                 GeneralUIUtils.waitForLoader();
207         }
208
209         public static void updateVfCsarFromOnBoarding() {
210                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue()).click();
211                 GeneralUIUtils.getWebElementsListWaitForVisible(DataTestIdEnum.OnBoardingTable.CSAR_ROW.getValue()).get(0)
212                                 .click();
213                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.UPDATE_ICON.getValue()).click();
214                 GeneralUIUtils.clickSaveButton();
215                 GeneralUIUtils.waitForLoader();
216         }
217
218         public static ResourceReqDetails defineResourceDetails() {
219                 ResourceReqDetails resource = new ResourceReqDetails();
220                 resource = ElementFactory.getDefaultResource(NormativeTypesEnum.ROOT,
221                                 ResourceCategoryEnum.GENERIC_NETWORK_ELEMENTS);
222                 resource.setVersion(INITIAL_VERSION);
223                 resource.setIcon(ICON_RESOURCE_NAME);
224                 resource.setResourceType(ResourceTypeEnum.VF.toString());
225                 resource.setName(getRandomComponentName(RESOURCE_NAME_PREFIX));
226
227                 return resource;
228         }
229
230         protected static String getRandomComponentName(String prefix) {
231                 return prefix + new Random().nextInt(10000);
232         }
233
234         public static ImmutablePair<String, String> getRIPosition(ResourceReqDetails createResourceInUI, User user) {
235                 GeneralUIUtils.sleep(1000);
236                 String responseAfterDrag = RestCDUtils.getResource(createResourceInUI).getResponse();
237                 JSONObject jsonResource = (JSONObject) JSONValue.parse(responseAfterDrag);
238                 String xPosPostDrag = (String) ((JSONObject) ((JSONArray) jsonResource.get("componentInstances")).get(0))
239                                 .get("posX");
240                 String yPosPostDrag = (String) ((JSONObject) ((JSONArray) jsonResource.get("componentInstances")).get(0))
241                                 .get("posY");
242                 return new ImmutablePair<String, String>(xPosPostDrag, yPosPostDrag);
243
244         }
245
246         public static void fillinDeploymentArtifactFormAndClickDone(
247                         org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails details, String filePath) {
248                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ArtifactModal.LABEL.getValue())
249                                 .sendKeys(details.getArtifactLabel());
250                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.DESCRIPTION.getValue())
251                                 .sendKeys(details.getDescription());
252                 GeneralUIUtils.getSelectList(details.getArtifactType(), DataTestIdEnum.ArtifactModal.TYPE.getValue());
253                 retryMethodOnException(() -> GeneralUIUtils
254                                 .getWebElementByDataTestId(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue()).sendKeys(filePath));
255                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.DONE.getValue()).click();
256                 GeneralUIUtils.waitForLoader();
257         }
258
259         /**
260          * Tests and Accept resource or service
261          * 
262          * @param createResourceInUI
263          */
264         public static void testAndAcceptElement(ComponentReqDetails createResourceInUI) {
265                 GeneralUIUtils.waitForLoader();
266                 GeneralUIUtils.getWebElementWaitForVisible(createResourceInUI.getName()).click();
267                 GeneralUIUtils.waitForLoader();
268                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.LifeCyleChangeButtons.START_TESTING.getValue())
269                                 .click();
270                 GeneralUIUtils.waitForLoader();
271                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.LifeCyleChangeButtons.ACCEPT.getValue()).click();
272                 GeneralUIUtils.waitForLoader();
273                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.ACCEP_TESTING_MESSAGE.getValue())
274                                 .sendKeys("resource " + createResourceInUI.getName() + " tested successfuly");
275                 GeneralUIUtils.waitForLoader();
276                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.OK.getValue()).click();
277                 GeneralUIUtils.waitForLoader();
278                 GeneralUIUtils.waitForElementToDisappear(DataTestIdEnum.ModalItems.OK.getValue());
279         }
280
281         /**
282          * Waits Until resource changed to requested lifeCycle State
283          * 
284          * @param createResourceInUI
285          * @param requestedLifeCycleState
286          * @return
287          */
288         public static Resource waitForState(ResourceReqDetails createResourceInUI,
289                         LifecycleStateEnum requestedLifeCycleState) {
290                 Supplier<Resource> resourceGetter = () -> {
291                         String resourceString = RestCDUtils.getResource(createResourceInUI).getResponse();
292                         return ResponseParser.convertResourceResponseToJavaObject(resourceString);
293                 };
294                 Function<Resource, Boolean> verifier = res -> res.getLifecycleState() == requestedLifeCycleState;
295                 return FunctionalInterfaces.retryMethodOnResult(resourceGetter, verifier);
296
297         }
298
299 }