1 package org.openecomp.sdc.uici.tests.utilities;
3 import java.util.ArrayList;
5 import java.util.Random;
6 import java.util.function.Function;
7 import java.util.function.Supplier;
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;
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;
24 public final class ServiceUIUtils {
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";
30 private ServiceUIUtils() {
31 throw new UnsupportedOperationException();
34 public static String defineServiceName(String serviceName) {
35 WebElement serviceNameElement = GeneralUIUtils.getWebElementWaitForVisible(GeneralSection.NAME.getValue());
36 serviceNameElement.clear();
37 serviceNameElement.sendKeys(serviceName);
41 public static void defineTagsList(ServiceReqDetails service, String[] serviceTags) {
42 List<String> taglist = new ArrayList<String>();
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);
51 taglist.add(0, service.getName());
52 service.setTags(taglist);
55 public static Select defineServiceCategory(String category) {
57 return GeneralUIUtils.getSelectList(category, "selectGeneralCategory");
60 private static void defineServiceProjectCode(String projectCode) {
61 WebElement attProjectCodeTextbox = GeneralUIUtils.getWebElementWaitForVisible("projectCode");
62 attProjectCodeTextbox.clear();
63 attProjectCodeTextbox.sendKeys(projectCode);
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());
80 public static ServiceReqDetails createServiceInUI(User user) {
82 ServiceReqDetails defineServiceetails = defineServiceDetails(user);
83 GeneralUIUtils.clickAddComponent(DataTestIdEnum.Dashboard.BUTTON_ADD_SERVICE);
85 GeneralUIUtils.waitForLoader();
86 fillServiceGeneralPage(defineServiceetails, user);
88 GeneralUIUtils.clickCreateButton();
90 return defineServiceetails;
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));
104 protected static String getRandomComponentName(String prefix) {
105 return prefix + new Random().nextInt(10000);
109 * Waits Until service changed to requested lifeCycle State
111 * @param createServiceInUI
112 * @param requestedLifeCycleState
116 public static Service waitForState(ServiceReqDetails createServiceInUI, LifecycleStateEnum requestedLifeCycleState,
118 Supplier<Service> serviceGetter = () -> {
119 String resourceString = RestCDUtils.getService(createServiceInUI, user).getResponse();
120 return ResponseParser.convertServiceResponseToJavaObject(resourceString);
122 Function<Service, Boolean> verifier = res -> res.getLifecycleState() == requestedLifeCycleState;
123 return FunctionalInterfaces.retryMethodOnResult(serviceGetter, verifier);
128 * This Method Approves service for distribution<br>
129 * It assumes governor role is already logged in
131 * @param createServiceInUI
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());