[SDC-29] rebase continue work to align source
[sdc.git] / ui-ci-dev / src / main / java / org / openecomp / sdc / uici / tests / utilities / ServiceUIUtils.java
1 package org.openecomp.sdc.uici.tests.utilities;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Random;
6 import java.util.function.Function;
7 import java.util.function.Supplier;
8
9 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum;
10 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.GeneralSection;
11 import org.openqa.selenium.Keys;
12 import org.openqa.selenium.WebElement;
13 import org.openqa.selenium.support.ui.Select;
14
15 import org.openecomp.sdc.be.model.LifecycleStateEnum;
16 import org.openecomp.sdc.be.model.Service;
17 import org.openecomp.sdc.be.model.User;
18 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
19 import org.openecomp.sdc.ci.tests.datatypes.enums.ServiceCategoriesEnum;
20 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
21 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
22 import org.openecomp.sdc.common.datastructure.FunctionalInterfaces;
23
24 public final class ServiceUIUtils {
25
26         public static final String SERVICE_NAME_PREFIX = "ServiceCDTest-";
27         public static final String INITIAL_VERSION = "0.1";
28         public static final String ICON_SERVICE_NAME = "mobility";
29
30         private ServiceUIUtils() {
31                 throw new UnsupportedOperationException();
32         }
33
34         public static String defineServiceName(String serviceName) {
35                 WebElement serviceNameElement = GeneralUIUtils.getWebElementWaitForVisible(GeneralSection.NAME.getValue());
36                 serviceNameElement.clear();
37                 serviceNameElement.sendKeys(serviceName);
38                 return serviceName;
39         }
40
41         public static void defineTagsList(ServiceReqDetails service, String[] serviceTags) {
42                 List<String> taglist = new ArrayList<String>();
43                 ;
44                 WebElement serviceTagsTextbox = GeneralUIUtils.getWebElementWaitForVisible("i-sdc-tag-input");
45                 for (String tag : serviceTags) {
46                         serviceTagsTextbox.clear();
47                         serviceTagsTextbox.sendKeys(tag);
48                         serviceTagsTextbox.sendKeys(Keys.ENTER);
49                         taglist.add(tag);
50                 }
51                 taglist.add(0, service.getName());
52                 service.setTags(taglist);
53         }
54
55         public static Select defineServiceCategory(String category) {
56
57                 return GeneralUIUtils.getSelectList(category, "selectGeneralCategory");
58         }
59
60         private static void defineServiceProjectCode(String projectCode) {
61                 WebElement attProjectCodeTextbox = GeneralUIUtils.getWebElementWaitForVisible("projectCode");
62                 attProjectCodeTextbox.clear();
63                 attProjectCodeTextbox.sendKeys(projectCode);
64         }
65
66         private static void fillServiceGeneralPage(ServiceReqDetails service, User user) {
67                 service.setContactId(user.getUserId());
68                 service.setCreatorUserId(user.getUserId());
69                 service.setCreatorFullName(user.getFullName());
70                 defineServiceName(service.getName());
71                 defineServiceCategory(service.getCategories().get(0).getName());
72                 GeneralUIUtils.defineDescription(service.getDescription());
73                 defineTagsList(service,
74                                 new String[] { service.getName(), "This-is-tag", "another-tag", "Test-automation-tag" });
75                 GeneralUIUtils.defineUserId(service.getCreatorUserId());
76                 defineServiceProjectCode(service.getProjectCode());
77
78         }
79
80         public static ServiceReqDetails createServiceInUI(User user) {
81
82                 ServiceReqDetails defineServiceetails = defineServiceDetails(user);
83                 GeneralUIUtils.clickAddComponent(DataTestIdEnum.Dashboard.BUTTON_ADD_SERVICE);
84
85                 GeneralUIUtils.waitForLoader();
86                 fillServiceGeneralPage(defineServiceetails, user);
87
88                 GeneralUIUtils.clickCreateButton();
89
90                 return defineServiceetails;
91
92         }
93
94         public static ServiceReqDetails defineServiceDetails(User user) {
95                 ServiceReqDetails service = new ServiceReqDetails();
96                 service = ElementFactory.getDefaultService(ServiceCategoriesEnum.MOBILITY, user);
97                 service.setVersion(INITIAL_VERSION);
98                 service.setIcon(ICON_SERVICE_NAME);
99                 service.setName(getRandomComponentName(SERVICE_NAME_PREFIX));
100
101                 return service;
102         }
103
104         protected static String getRandomComponentName(String prefix) {
105                 return prefix + new Random().nextInt(10000);
106         }
107
108         /**
109          * Waits Until service changed to requested lifeCycle State
110          * 
111          * @param createServiceInUI
112          * @param requestedLifeCycleState
113          * @param user
114          * @return
115          */
116         public static Service waitForState(ServiceReqDetails createServiceInUI, LifecycleStateEnum requestedLifeCycleState,
117                         User user) {
118                 Supplier<Service> serviceGetter = () -> {
119                         String resourceString = RestCDUtils.getService(createServiceInUI, user).getResponse();
120                         return ResponseParser.convertServiceResponseToJavaObject(resourceString);
121                 };
122                 Function<Service, Boolean> verifier = res -> res.getLifecycleState() == requestedLifeCycleState;
123                 return FunctionalInterfaces.retryMethodOnResult(serviceGetter, verifier);
124
125         }
126
127         /**
128          * This Method Approves service for distribution<br>
129          * It assumes governor role is already logged in
130          * 
131          * @param createServiceInUI
132          */
133         public static void approveServiceForDistribution(ServiceReqDetails createServiceInUI) {
134                 GeneralUIUtils.waitForLoader();
135                 GeneralUIUtils.getWebElementWaitForVisible(createServiceInUI.getName()).click();
136                 GeneralUIUtils.waitForLoader();
137                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.LifeCyleChangeButtons.APPROVE.getValue()).click();
138                 GeneralUIUtils.waitForLoader();
139                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.ACCEP_TESTING_MESSAGE.getValue())
140                                 .sendKeys("Service " + createServiceInUI.getName() + " Approved For Distribution");
141                 GeneralUIUtils.waitForLoader();
142                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.OK.getValue()).click();
143                 GeneralUIUtils.waitForLoader();
144                 GeneralUIUtils.waitForElementToDisappear(DataTestIdEnum.ModalItems.OK.getValue());
145         }
146
147 }