vid-automation selenium tests
[vid.git] / vid-automation / src / main / java / vid / automation / test / test / CreateInstanceDialogBaseTest.java
1 package vid.automation.test.test;
2
3 import org.junit.Assert;
4 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
5 import org.openqa.selenium.WebElement;
6 import vid.automation.test.Constants;
7 import vid.automation.test.infra.Click;
8 import vid.automation.test.infra.Exists;
9 import vid.automation.test.infra.Get;
10 import vid.automation.test.infra.SelectOption;
11 import vid.automation.test.model.Service;
12 import vid.automation.test.model.ServiceModel;
13 import vid.automation.test.sections.ViewEditPage;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 public class CreateInstanceDialogBaseTest extends VidBaseTestCase {
19
20     private ViewEditPage viewEditPage= new ViewEditPage();
21
22     void assertServiceMetadata(String expectedMetadata, String actualMetadata) {
23         WebElement serviceNameElem = GeneralUIUtils.getWebElementByTestID(actualMetadata);
24         String actualServiceName = serviceNameElem.getText();
25         Assert.assertEquals(expectedMetadata, actualServiceName);
26     }
27
28     void validateServiceCreationDialog(Service expectedService) {
29         assertThatServiceCreationDialogIsVisible();
30         assertServiceMetadata(expectedService.name, Constants.SERVICE_NAME);
31         assertServiceMetadata(expectedService.uuid, Constants.SERVICE_UUID);
32         assertServiceMetadata(expectedService.invariantUuid, Constants.SERVICE_INVARIANT_UUID);
33         assertServiceMetadata(expectedService.category, Constants.SERVICE_CATEGORY);
34         assertServiceMetadata(expectedService.version, Constants.SERVICE_VERSION);
35         assertServiceMetadata(expectedService.description, Constants.SERVICE_DESCRIPTION);
36     }
37
38     public void assertThatServiceCreationDialogIsVisible() {
39         boolean byText = GeneralUIUtils.findAndWaitByText(Constants.BrowseASDC.CREATE_SERVICE_INSTANCE, 15);
40         Assert.assertTrue(byText);
41     }
42
43     void assertSuccessfulServiceInstanceCreation() {
44         boolean byText = GeneralUIUtils.findAndWaitByText(Constants.BrowseASDC.SERVICE_INSTANCE_CREATED_SUCCESSFULLY_TEXT, 100);
45         Assert.assertTrue(Constants.BrowseASDC.SERVICE_INSTANCE_CREATION_FAILED_MESSAGE, byText);
46     }
47
48     void validateVnfCreationDialog(ServiceModel expectedServiceInstance) {
49         GeneralUIUtils.ultimateWait();
50         validateNodeTemplateCreationDialog(expectedServiceInstance);
51         assertServiceMetadata(expectedServiceInstance.resourceName, Constants.CreateNewInstance.RESOURCE_NAME);
52         assertServiceMetadata(expectedServiceInstance.nfType, Constants.CreateNewInstance.NF_TYPE);
53         assertServiceMetadata(expectedServiceInstance.nfRole, Constants.CreateNewInstance.NF_ROLE);
54         assertServiceMetadata(expectedServiceInstance.nfFunction, Constants.CreateNewInstance.NF_FUNCTION);
55         assertServiceMetadata(expectedServiceInstance.nfNamingCode, Constants.CreateNewInstance.NF_NAMING_CODE);
56     }
57
58     void validateNodeTemplateCreationDialog(ServiceModel expectedServiceInstance){
59         GeneralUIUtils.ultimateWait();
60         assertServiceMetadata(expectedServiceInstance.serviceName, Constants.SERVICE_NAME);
61         assertServiceMetadata(expectedServiceInstance.subscriberName, Constants.SUBSCRIBER_NAME);
62         assertServiceMetadata(expectedServiceInstance.serviceInstanceName, Constants.SERVICE_INSTANCE_NAME);
63         assertServiceMetadata(expectedServiceInstance.modelName, Constants.CreateNewInstance.MODEL_NAME);
64         assertServiceMetadata(expectedServiceInstance.modelInvariantUuid, Constants.CreateNewInstance.MODEL_INVARIANT_UUID);
65         assertServiceMetadata(expectedServiceInstance.modelVersion, Constants.CreateNewInstance.MODEL_VERSION);
66         assertServiceMetadata(expectedServiceInstance.modelUuid, Constants.CreateNewInstance.MODEL_UUID);
67         assertServiceMetadata(expectedServiceInstance.modelCustomizationUuid, Constants.CreateNewInstance.MODEL_CUSTOMIZATION_UUID);
68     }
69
70     private String fillDetailsInDialogWithGeneratedName(String name, String lcpRegion, String tenant, String suppressRollback,
71                                                         String legacyRegion, ArrayList<String> permittedTenants)
72     {
73         String generatedInstanceName = viewEditPage.generateInstanceName(name);
74         return fillDetailsInDialog(generatedInstanceName, lcpRegion, tenant, suppressRollback, legacyRegion, permittedTenants);
75     }
76
77     private String fillDetailsInDialog(String name, String lcpRegion, String tenant, String suppressRollback,
78                       String legacyRegion, ArrayList<String> permittedTenants)
79     {
80         viewEditPage.setInstanceName(name);
81         viewEditPage.selectLCPRegion(lcpRegion);
82         assertDropdownPermittedItemsByValue(permittedTenants, Constants.ViewEdit.TENANT_OPTION_CLASS);
83         viewEditPage.selectTenant(tenant);
84         viewEditPage.selectSuppressRollback(suppressRollback);
85         viewEditPage.setLegacyRegion(legacyRegion);
86         return name;
87     }
88
89
90     protected String addVFModule(String name, String lcpRegion, String tenant, String suppressRollback,
91                                  String legacyRegion, ArrayList<String> permittedTenants,ServiceModel expectedServiceInstance) {
92         viewEditPage.selectVfModuleToAdd(name);
93         if(expectedServiceInstance != null) {
94             validateNodeTemplateCreationDialog(expectedServiceInstance);
95         }
96         String instanceName = fillDetailsInDialogWithGeneratedName(Constants.INSTANCE_NAME_SELECT_TESTS_ID, lcpRegion, tenant, suppressRollback, legacyRegion, permittedTenants);
97         viewEditPage.clickConfirmButton();
98         assertSuccessfulVFModuleCreation();
99         viewEditPage.clickCloseButton();
100         GeneralUIUtils.ultimateWait();
101         return instanceName;
102     }
103
104     protected void addVolumeGroup (String name, String lcpRegion, String tenant, String suppressRollback,
105                                   String legacyRegion, ArrayList<String> permittedTenants, ServiceModel expectedServiceInstance) {
106         viewEditPage.selectVolumeGroupToAdd(name);
107         if(expectedServiceInstance != null) {
108             validateNodeTemplateCreationDialog(expectedServiceInstance);
109         }
110         fillDetailsInDialogWithGeneratedName(Constants.ViewEdit.VOLUME_GROUP_INSTANCE_NAME_PREFIX, lcpRegion, tenant, suppressRollback, legacyRegion, permittedTenants);
111         viewEditPage.clickConfirmButton();
112         assertSuccessfulVolumeGroupCreation();
113         viewEditPage.clickCloseButton();
114         GeneralUIUtils.ultimateWait();
115     }
116
117     protected void addVNF(String name, String lcpRegion, String tenant, String suppressRollback,
118                           String legacyRegion, String productFamily, String platform, ArrayList<String> permittedTenants, List<String> lobs, ServiceModel serviceModel, String instanceName) {
119         openAndFillVnfPopup(name, lcpRegion, tenant, suppressRollback, legacyRegion, productFamily, platform,permittedTenants, lobs, serviceModel, instanceName);
120         viewEditPage.clickConfirmButton();
121         successConfirmVnfAndClosePopup();
122
123     }
124
125     protected void openAndFillVnfPopup(String name, String lcpRegion, String tenant, String suppressRollback,
126                                        String legacyRegion, String productFamily, String platform, ArrayList<String> permittedTenants, List<String> lobs, ServiceModel serviceModel, String instanceName) {
127         viewEditPage.selectNodeInstanceToAdd(name);
128         GeneralUIUtils.ultimateWait();
129         if(serviceModel != null) {
130             validateVnfCreationDialog(serviceModel);
131         }
132         viewEditPage.selectProductFamily(productFamily);
133         if(platform != null) {
134             SelectOption.byTestIdAndVisibleText(platform, Constants.OwningEntity.PLATFORM_SELECT_TEST_ID);
135         }
136         else {
137             Click.onFirstSelectOptionById(Constants.OwningEntity.PLATFORM_SELECT_TEST_ID);
138         }
139         if(lobs != null) {
140             SelectOption.selectOptionsFromMultiselectById(Constants.OwningEntity.LOB_SELECT_TEST_ID, lobs);
141         }
142         fillDetailsInDialog(instanceName, lcpRegion, tenant, suppressRollback, legacyRegion, permittedTenants);
143     }
144
145     protected void successConfirmVnfAndClosePopup() {
146         assertSuccessfulVNFCreation();
147         viewEditPage.clickCloseButton();
148         GeneralUIUtils.ultimateWait();
149     }
150
151     protected void assertConfirmShowMissingDataErrorOnCurrentPopup(String field) {
152         viewEditPage.clickConfirmButton();
153         boolean byclassAndText = Exists.byClassAndText(Constants.ViewEdit.ERROR_CLASS, String.format(Constants.MISSING_DATA, field));
154         Assert.assertFalse(field + " " + Constants.REQUIRED, byclassAndText);
155     }
156
157     protected void cancelPopup() {
158         viewEditPage.clickCancelButtonByTestID();
159         GeneralUIUtils.ultimateWait();
160     }
161
162
163
164     public static void AssertUnselectedOptionInMultiselectById(String multiSelectId, String unselectedOption){
165         Click.byId(multiSelectId);
166         WebElement element = Get.byClassAndText(Constants.MULTI_SELECT_UNSELECTED_CLASS, unselectedOption);
167         Assert.assertTrue("The option "+ unselectedOption +" is already selected",element != null);
168         Click.byId(multiSelectId);
169     }
170
171     public void validateDynamicFields(List<String> dynamicFields) {
172         for (String field : dynamicFields) {
173             WebElement fieldElement = GeneralUIUtils.findByText(field);
174             Assert.assertNotNull("couldn't find dynamic field: " + field, fieldElement);
175         }
176     }
177 }