blob: 6fdbc9d8754a0991f830810f542da38fe8845ffc [file] [log] [blame]
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +03001///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
2/// <reference types="Cypress" />
3
Ittay Stern6f900cc2018-08-29 17:01:32 +03004import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder';
5import {AsyncInstantiationModel} from '../../support/jsonBuilders/models/asyncInstantiation.model';
Einat Vinouze97710de2020-06-03 12:18:26 +03006
7export let PENDING : string = "pending";
8export let INPROGRESS : string = "in_progress";
9export let PAUSE : string = "pause";
10export let X_O : string = "x-circle-o";
11export let SUCCESS_CIRCLE : string = "success-circle-o";
12export let STOPPED : string = "stop";
13export let COMPLETED_WITH_ERRORS : string = "success_with_warning";
14export let PAUSE_UPON_COMPLETION : string = "stopped-upon-success";
15export let UNKNOWN : string = "question-mark-circle-o";
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030016
Ittay Stern6f900cc2018-08-29 17:01:32 +030017describe('Instantiation status', function () {
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030018 var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
Ittay Stern6f900cc2018-08-29 17:01:32 +030019 var asyncRes: Array<any>;
Eylon Malin18361152019-12-16 10:24:57 +020020 const contextMenuCreateAnotherOne = 'context-menu-create-another-one';
Alexey Sandlera3b9e3e2020-04-19 20:32:42 +030021 const contextMenuNewViewEdit = 'context-menu-new-view-edit';
Ittay Stern6f900cc2018-08-29 17:01:32 +030022
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030023 beforeEach(() => {
Ittay Stern32dbf802019-10-29 12:58:49 +020024 cy.clearSessionStorage();
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030025 cy.setReduxState();
26 cy.preventErrorsOnLoading();
27 cy.initAAIMock();
28 cy.initVidMock();
Ittay Stern607ea3d2019-10-23 17:10:52 +030029 jsonBuilderInstantiationBuilder.basicMock('cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
Ittay Stern6f900cc2018-08-29 17:01:32 +030030 Cypress.config('baseUrl') + "/asyncInstantiation**",
31 (res: any) => {
32 asyncRes = res;
33 return res;
34 });
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030035 cy.login();
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030036 });
37
Ittay Stern6f900cc2018-08-29 17:01:32 +030038 afterEach(() => {
39 cy.screenshot();
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +030040 });
Ittay Stern6f900cc2018-08-29 17:01:32 +030041
42 it('should display the correct icons per status', function () {
Ittay Sternc439c812019-10-30 14:46:22 +020043 const serviceAction:any = {INSTANTIATE : 'Instantiate', DELETE: 'Delete', UPDATE: 'Update', UPGRADE: 'Upgrade'};
Ittay Stern6f900cc2018-08-29 17:01:32 +030044 cy.openIframe('app/ui/#/instantiationStatus');
45 for(let i = 0 ; i < asyncRes.length; i++){
Einat Vinouze5b5e0bb2020-05-21 18:16:57 +030046 cy.getTableRowByIndex('instantiation-status', i).get(`td custom-icon#jobStatusIcon-${i} div`)
47 .should('have.class', `__${getJobIconClass(asyncRes[i].jobStatus)}`);
48
Ittay Stern6f900cc2018-08-29 17:01:32 +030049 if(asyncRes[i].project){
50 cy.getTableRowByIndex('instantiation-status', i).get('td#project span').contains(asyncRes[i].project);
51 }
52 if(asyncRes[i].userId){
53 cy.getTableRowByIndex('instantiation-status', i).get('td#userId span').contains(asyncRes[i].userId);
54 }
55 if(asyncRes[i].tenantName){
56 cy.getTableRowByIndex('instantiation-status', i).get('td#tenantName span').contains(asyncRes[i].tenantName);
57 }
58 if(asyncRes[i].serviceModelName){
59 cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelName span').contains(asyncRes[i].serviceModelName);
60 }
61 if(asyncRes[i].serviceInstanceName){
62 cy.getTableRowByIndex('instantiation-status', i).get('td#serviceInstanceName span').contains(asyncRes[i].serviceInstanceName);
63 }
64 if(asyncRes[i].serviceModelVersion){
65 cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelVersion span').contains(asyncRes[i].serviceModelVersion);
66 }
67 if(asyncRes[i].subscriberName){
68 cy.getTableRowByIndex('instantiation-status', i).get('td#subscriberName span').contains(asyncRes[i].subscriberName);
69 }
70 if(asyncRes[i].action) {
71 cy.getTableRowByIndex('instantiation-status', i).get('td#action span').contains(serviceAction[asyncRes[i].action]);
72 }
73 }
74 });
75
Einat Vinouze5b5e0bb2020-05-21 18:16:57 +030076 function getJobIconClass(status: string) : string{
77 switch(`${status}`.toUpperCase()) {
78 case 'PENDING' :
79 return PENDING;
80 case 'IN_PROGRESS' :
81 return INPROGRESS;
82 case 'PAUSED' :
83 return PAUSE;
84 case 'FAILED' :
85 return X_O;
86 case 'COMPLETED' :
87 return SUCCESS_CIRCLE;
88 case 'STOPPED' :
89 return STOPPED;
90 case 'COMPLETED_WITH_ERRORS' :
91 return COMPLETED_WITH_ERRORS;
92 case 'COMPLETED_AND_PAUSED' :
93 return PAUSE_UPON_COMPLETION;
94 default:
95 return UNKNOWN;
96 }
97 }
98
Eylon Malind00cf802019-12-03 12:12:38 +020099 it('should filter rows by filter text', function () {
100 cy.openIframe('app/ui/#/instantiationStatus');
Sara Weissbae7a352019-12-08 14:47:42 +0200101 cy.getElementByDataTestsId("instantiation-status-filter").type("ComplexService");
Eylon Malinafcfb822019-12-08 16:42:52 +0200102 cy.get('table#instantiation-status tbody tr').should('have.length', 2);
Eylon Malind00cf802019-12-03 12:12:38 +0200103 });
104
105 it('should filter rows by url filter text', function () {
106 cy.openIframe('app/ui/#/instantiationStatus?filterText=ComplexService');
Sara Weissbae7a352019-12-08 14:47:42 +0200107 cy.getElementByDataTestsId("instantiation-status-filter").should('have.value','ComplexService');
Eylon Malinafcfb822019-12-08 16:42:52 +0200108 cy.get('table#instantiation-status tbody tr').should('have.length', 2);
Eylon Malind00cf802019-12-03 12:12:38 +0200109 });
110
Eylon Malin640a01e2019-12-08 15:56:46 +0200111 function getDisabledDropDownItemByDataTestId(testId:String) {
Eylon Malin93f8bd72019-12-08 10:12:01 +0200112 return cy.get('.dropdown-menu').find('.disabled').find(`[data-tests-id='${testId}']`);
113 }
114
115 function clickOnTitleAndThenOnMenuWithJobId(jobId: string) {
116 cy.getElementByDataTestsId("instantiation-status-title").click();
117 cy.get('#' + jobId).find('.menu-div').click();
118 }
119
Einat Vinouzed05d1c82020-06-02 13:49:23 +0300120 it('should disabled correct menu items', function () {
Ittay Stern6f900cc2018-08-29 17:01:32 +0300121
Eylon Malin93f8bd72019-12-08 10:12:01 +0200122 cy.openIframe('app/ui/#/instantiationStatus');
Ittay Stern6f900cc2018-08-29 17:01:32 +0300123
Eylon Malin93f8bd72019-12-08 10:12:01 +0200124 // Instantiate action with Job status FAILED - isRetry = true
Eylon Malin93f8bd72019-12-08 10:12:01 +0200125 clickOnTitleAndThenOnMenuWithJobId('5c2cd8e5-27d0-42e3-85a1-85db5eaba459');
Eylon Malin640a01e2019-12-08 15:56:46 +0200126 getDisabledDropDownItemByDataTestId('context-menu-retry').should('not.exist');
127 getDisabledDropDownItemByDataTestId('context-menu-remove').should('exist');
128 getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
129 getDisabledDropDownItemByDataTestId('context-menu-hide').should('not.exist');
130 getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('not.exist');
131 getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('not.exist');
Eylon Malin93f8bd72019-12-08 10:12:01 +0200132
133 // Instantiate action with Job status FAILED - isRetry = false
134 clickOnTitleAndThenOnMenuWithJobId('e1db03c3-6274-4ff7-84cf-7bd3a3946de7');
Eylon Malin640a01e2019-12-08 15:56:46 +0200135 getDisabledDropDownItemByDataTestId('context-menu-retry').should('not.be.visible');
136 getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
137 getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('not.exist');
Eylon Malin93f8bd72019-12-08 10:12:01 +0200138
139 //Delete action with Job status IN_PROGRESS
140 clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339c2');
Eylon Malin640a01e2019-12-08 15:56:46 +0200141 getDisabledDropDownItemByDataTestId('context-menu-remove').should('exist');
142 getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
143 getDisabledDropDownItemByDataTestId('context-menu-hide').should('exist');
144 getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('not.exist');
145 getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('exist');
Eylon Malin93f8bd72019-12-08 10:12:01 +0200146
147 //Update action with Job status COMPLETED
148 clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339c1');
Eylon Malin640a01e2019-12-08 15:56:46 +0200149 getDisabledDropDownItemByDataTestId('context-menu-remove').should('exist');
150 getDisabledDropDownItemByDataTestId('context-menu-open').should('not.exist');
151 getDisabledDropDownItemByDataTestId('context-menu-hide').should('not.exist');
152 getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('not.exist');
153 getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('exist');
Einat Vinouzee0638b12020-06-02 11:10:41 +0300154
155 //COMPLETED_AND_PAUSED
156 clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339d9');
157 getDisabledDropDownItemByDataTestId('context-menu-retry').should('exist');
158 getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
159 getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('exist');
160 getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('exist');
Eylon Malin640a01e2019-12-08 15:56:46 +0200161 });
162
163 it('clicking on create another one item, go to expected url', function () {
164 //see cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json id:8
165 const jobId = '5c2cd8e5-27d0-42e3-85a1-85db5eaba459';
166 const serviceModelId = 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0';
Eylon Malinfa4d3e52020-01-02 14:08:31 +0200167 const vidBaseUrl = `${Cypress.config().baseUrl}/serviceModels.htm`;
Eylon Malin640a01e2019-12-08 15:56:46 +0200168
169 cy.openIframe('app/ui/#/instantiationStatus');
170
171 clickOnTitleAndThenOnMenuWithJobId(jobId);
Eylon Malin18361152019-12-16 10:24:57 +0200172 cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuCreateAnotherOne).contains('Create another one');
Eylon Malin640a01e2019-12-08 15:56:46 +0200173 cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuCreateAnotherOne).click();
174 cy.location().should((loc) => {
175 expect(loc.toString()).to.eq(`${vidBaseUrl}#/servicePlanning/RECREATE?serviceModelId=${serviceModelId}&jobId=${jobId}`);
176 });
Ittay Stern6f900cc2018-08-29 17:01:32 +0300177 });
Ittay Stern607ea3d2019-10-23 17:10:52 +0300178
Alexey Sandlera3b9e3e2020-04-19 20:32:42 +0300179 it('clicking on new view edit, go to expected url', function () {
180 //see cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json id:10
181 const jobId = '850dc7d2-5240-437f-9bcd-b1ed7dc339c1';
182 const serviceModelId = 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0';
183 const vidBaseUrl = `${Cypress.config().baseUrl}/serviceModels.htm`;
184 const serviceType = 'TYLER%20SILVIA';
185
186 cy.openIframe('app/ui/#/instantiationStatus');
187 clickOnTitleAndThenOnMenuWithJobId(jobId);
188 cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuNewViewEdit).contains('New View/Edit');
189 cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuNewViewEdit).click();
190 cy.location().should((location) => {
191 expect(location.toString()).to.eq(`${vidBaseUrl}#/servicePlanning/EDIT?serviceModelId=${serviceModelId}&serviceType=${serviceType}&jobId=${jobId}`);
192 });
193 });
Sonsino, Ofir (os0695)ff76b5e2018-07-10 15:57:37 +0300194});