1 ///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
2 /// <reference types="Cypress" />
4 import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder';
5 import {AsyncInstantiationModel} from '../../support/jsonBuilders/models/asyncInstantiation.model';
7 export let PENDING : string = "pending";
8 export let INPROGRESS : string = "in_progress";
9 export let PAUSE : string = "pause";
10 export let X_O : string = "x-circle-o";
11 export let SUCCESS_CIRCLE : string = "success-circle-o";
12 export let STOPPED : string = "stop";
13 export let COMPLETED_WITH_ERRORS : string = "success_with_warning";
14 export let PAUSE_UPON_COMPLETION : string = "stopped-upon-success";
15 export let UNKNOWN : string = "question-mark-circle-o";
17 describe('Instantiation status', function () {
18 var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
19 var asyncRes: Array<any>;
20 const contextMenuCreateAnotherOne = 'context-menu-create-another-one';
21 const contextMenuNewViewEdit = 'context-menu-new-view-edit';
24 cy.clearSessionStorage();
26 cy.preventErrorsOnLoading();
29 jsonBuilderInstantiationBuilder.basicMock('cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
30 Cypress.config('baseUrl') + "/asyncInstantiation**",
42 it('should display the correct icons per status', function () {
43 const serviceAction:any = {INSTANTIATE : 'Instantiate', DELETE: 'Delete', UPDATE: 'Update', UPGRADE: 'Upgrade'};
44 cy.openIframe('app/ui/#/instantiationStatus');
45 for(let i = 0 ; i < asyncRes.length; i++){
46 cy.getTableRowByIndex('instantiation-status', i).get(`td custom-icon#jobStatusIcon-${i} div`)
47 .should('have.class', `__${getJobIconClass(asyncRes[i].jobStatus)}`);
49 if(asyncRes[i].project){
50 cy.getTableRowByIndex('instantiation-status', i).get('td#project span').contains(asyncRes[i].project);
52 if(asyncRes[i].userId){
53 cy.getTableRowByIndex('instantiation-status', i).get('td#userId span').contains(asyncRes[i].userId);
55 if(asyncRes[i].tenantName){
56 cy.getTableRowByIndex('instantiation-status', i).get('td#tenantName span').contains(asyncRes[i].tenantName);
58 if(asyncRes[i].serviceModelName){
59 cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelName span').contains(asyncRes[i].serviceModelName);
61 if(asyncRes[i].serviceInstanceName){
62 cy.getTableRowByIndex('instantiation-status', i).get('td#serviceInstanceName span').contains(asyncRes[i].serviceInstanceName);
64 if(asyncRes[i].serviceModelVersion){
65 cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelVersion span').contains(asyncRes[i].serviceModelVersion);
67 if(asyncRes[i].subscriberName){
68 cy.getTableRowByIndex('instantiation-status', i).get('td#subscriberName span').contains(asyncRes[i].subscriberName);
70 if(asyncRes[i].action) {
71 cy.getTableRowByIndex('instantiation-status', i).get('td#action span').contains(serviceAction[asyncRes[i].action]);
76 function getJobIconClass(status: string) : string{
77 switch(`${status}`.toUpperCase()) {
87 return SUCCESS_CIRCLE;
90 case 'COMPLETED_WITH_ERRORS' :
91 return COMPLETED_WITH_ERRORS;
92 case 'COMPLETED_AND_PAUSED' :
93 return PAUSE_UPON_COMPLETION;
99 it('should filter rows by filter text', function () {
100 cy.openIframe('app/ui/#/instantiationStatus');
101 cy.getElementByDataTestsId("instantiation-status-filter").type("ComplexService");
102 cy.get('table#instantiation-status tbody tr').should('have.length', 2);
105 it('should filter rows by url filter text', function () {
106 cy.openIframe('app/ui/#/instantiationStatus?filterText=ComplexService');
107 cy.getElementByDataTestsId("instantiation-status-filter").should('have.value','ComplexService');
108 cy.get('table#instantiation-status tbody tr').should('have.length', 2);
111 function getDisabledDropDownItemByDataTestId(testId:String) {
112 return cy.get('.dropdown-menu').find('.disabled').find(`[data-tests-id='${testId}']`);
115 function clickOnTitleAndThenOnMenuWithJobId(jobId: string) {
116 cy.getElementByDataTestsId("instantiation-status-title").click();
117 cy.get('#' + jobId).find('.menu-div').click();
120 it('should disabled correct menu items', function () {
122 cy.openIframe('app/ui/#/instantiationStatus');
124 // Instantiate action with Job status FAILED - isRetry = true
125 clickOnTitleAndThenOnMenuWithJobId('5c2cd8e5-27d0-42e3-85a1-85db5eaba459');
126 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');
133 // Instantiate action with Job status FAILED - isRetry = false
134 clickOnTitleAndThenOnMenuWithJobId('e1db03c3-6274-4ff7-84cf-7bd3a3946de7');
135 getDisabledDropDownItemByDataTestId('context-menu-retry').should('not.be.visible');
136 getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
137 getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('not.exist');
139 //Delete action with Job status IN_PROGRESS
140 clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339c2');
141 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');
147 //Update action with Job status COMPLETED
148 clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339c1');
149 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');
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');
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';
167 const vidBaseUrl = `${Cypress.config().baseUrl}/serviceModels.htm`;
169 cy.openIframe('app/ui/#/instantiationStatus');
171 clickOnTitleAndThenOnMenuWithJobId(jobId);
172 cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuCreateAnotherOne).contains('Create another one');
173 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}`);
179 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';
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}`);