remove import and add force in order to fix cypress
[vid.git] / vid-webpack-master / cypress / integration / iFrames / instantiationStatus.e2e.ts
index be1b2ac..094ea83 100644 (file)
 ///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
 /// <reference types="Cypress" />
 
-import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
-import { AsyncInstantiationModel } from '../../support/jsonBuilders/models/asyncInstantiation.model';
+import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder';
+import {AsyncInstantiationModel} from '../../support/jsonBuilders/models/asyncInstantiation.model';
 
-describe('Instantiation status page', function () {
+describe('Instantiation status', function () {
   var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
+  var asyncRes: Array<any>;
+  const contextMenuCreateAnotherOne = 'context-menu-create-another-one';
+  const contextMenuNewViewEdit = 'context-menu-new-view-edit';
+
   beforeEach(() => {
-    cy.window().then((win) => {
-      win.sessionStorage.clear();
+      cy.clearSessionStorage();
       cy.setReduxState();
       cy.preventErrorsOnLoading();
       cy.initAAIMock();
       cy.initVidMock();
-      jsonBuilderInstantiationBuilder.basicMock('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
-        Cypress.config('baseUrl') + "/asyncInstantiation**");
+      jsonBuilderInstantiationBuilder.basicMock('cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
+        Cypress.config('baseUrl') + "/asyncInstantiation**",
+        (res: any) => {
+            asyncRes = res;
+            return res;
+      });
       cy.login();
-    })
-  });
-
-  it('should disaplay the correct icons per status', function () {
-      cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json').then((res) => {
-        cy.openIframe('app/ui/#/instantiationStatus');
-        for(let i = 0 ; i < res.length; i++){
-          if(res[i].project){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#project span').contains(res[i].project);
-          }
-          if(res[i].userId){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#userId span').contains(res[i].userId);
-          }
-          if(res[i].tenantName){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#tenantName span').contains(res[i].tenantName);
-          }
-          if(res[i].serviceModelName){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelName span').contains(res[i].serviceModelName);
-          }
-          if(res[i].serviceInstanceName){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#serviceInstanceName span').contains(res[i].serviceInstanceName);
-          }
-          if(res[i].serviceModelVersion){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelVersion span').contains(res[i].serviceModelVersion);
-          }
-          if(res[i].subscriberName){
-            cy.getTableRowByIndex('instantiation-status', i).get('td#subscriberName span').contains(res[i].subscriberName);
-          }
+  });
+
+  afterEach(() => {
+    cy.screenshot();
+  });
+
+  it('should display the correct icons per status', function () {
+      const serviceAction:any = {INSTANTIATE : 'Instantiate', DELETE: 'Delete', UPDATE: 'Update', UPGRADE: 'Upgrade'};
+      cy.openIframe('app/ui/#/instantiationStatus');
+      for(let i = 0 ; i < asyncRes.length; i++){
+        cy.getTableRowByIndex('instantiation-status', i).get(`td custom-icon#jobStatusIcon-${i} div`)
+        .should('have.class', `__${getJobIconClass(asyncRes[i].jobStatus)}`);
+
+        if(asyncRes[i].project){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#project span').contains(asyncRes[i].project);
         }
-      });
+        if(asyncRes[i].userId){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#userId span').contains(asyncRes[i].userId);
+        }
+        if(asyncRes[i].tenantName){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#tenantName span').contains(asyncRes[i].tenantName);
+        }
+        if(asyncRes[i].serviceModelName){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelName span').contains(asyncRes[i].serviceModelName);
+        }
+        if(asyncRes[i].serviceInstanceName){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#serviceInstanceName span').contains(asyncRes[i].serviceInstanceName);
+        }
+        if(asyncRes[i].serviceModelVersion){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelVersion span').contains(asyncRes[i].serviceModelVersion);
+        }
+        if(asyncRes[i].subscriberName){
+          cy.getTableRowByIndex('instantiation-status', i).get('td#subscriberName span').contains(asyncRes[i].subscriberName);
+        }
+        if(asyncRes[i].action) {
+          cy.getTableRowByIndex('instantiation-status', i).get('td#action span').contains(serviceAction[asyncRes[i].action]);
+        }
+    }
+  });
+
+  function getJobIconClass(status: string) : string{
+    switch(`${status}`.toUpperCase()) {
+      case  'PENDING' :
+        return "pending";
+      case  'IN_PROGRESS' :
+        return  "in_progress";
+      case  'PAUSED' :
+        return "pause";
+      case  'FAILED' :
+        return "x-circle-o";
+      case  'COMPLETED' :
+        return "success-circle-o";
+      case  'STOPPED' :
+        return "stop";
+      case  'COMPLETED_WITH_ERRORS' :
+        return "success_with_warning";
+      case  'COMPLETED_AND_PAUSED' :
+        return "stopped-upon-success";
+      default:
+        return "question-mark-circle-o";
+    }
+  }
+
+  it('should filter rows by filter text', function () {
+    cy.openIframe('app/ui/#/instantiationStatus');
+    cy.getElementByDataTestsId("instantiation-status-filter").type("ComplexService");
+    cy.get('table#instantiation-status tbody tr').should('have.length', 2);
+  });
+
+  it('should filter rows by url filter text', function () {
+    cy.openIframe('app/ui/#/instantiationStatus?filterText=ComplexService');
+    cy.getElementByDataTestsId("instantiation-status-filter").should('have.value','ComplexService');
+    cy.get('table#instantiation-status tbody tr').should('have.length', 2);
+  });
+
+  function getDisabledDropDownItemByDataTestId(testId:String) {
+    return cy.get('.dropdown-menu').find('.disabled').find(`[data-tests-id='${testId}']`);
+  }
+
+  function clickOnTitleAndThenOnMenuWithJobId(jobId: string) {
+    cy.getElementByDataTestsId("instantiation-status-title").click();
+    cy.get('#' + jobId).find('.menu-div').click({force: true});
+  }
+
+  it('should disabled correct menu items', function () {
+
+    cy.openIframe('app/ui/#/instantiationStatus');
+
+    // Instantiate action with Job status FAILED - isRetry = true
+    clickOnTitleAndThenOnMenuWithJobId('5c2cd8e5-27d0-42e3-85a1-85db5eaba459');
+    getDisabledDropDownItemByDataTestId('context-menu-retry').should('not.exist');
+    getDisabledDropDownItemByDataTestId('context-menu-remove').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-hide').should('not.exist');
+    getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('not.exist');
+    getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('not.exist');
+
+    // Instantiate action with Job status FAILED - isRetry = false
+    clickOnTitleAndThenOnMenuWithJobId('e1db03c3-6274-4ff7-84cf-7bd3a3946de7');
+    getDisabledDropDownItemByDataTestId('context-menu-retry').should('not.be.visible');
+    getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
+    getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('not.exist');
+
+    //Delete action with Job status IN_PROGRESS
+    clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339c2');
+    getDisabledDropDownItemByDataTestId('context-menu-remove').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-hide').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('not.exist');
+    getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('exist');
+
+    //Update action with Job status COMPLETED
+    clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339c1');
+    getDisabledDropDownItemByDataTestId('context-menu-remove').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-open').should('not.exist');
+    getDisabledDropDownItemByDataTestId('context-menu-hide').should('not.exist');
+    getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('not.exist');
+    getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('exist');
+
+    //COMPLETED_AND_PAUSED
+    clickOnTitleAndThenOnMenuWithJobId('850dc7d2-5240-437f-9bcd-b1ed7dc339d9');
+    getDisabledDropDownItemByDataTestId('context-menu-retry').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-open').should('exist');
+    getDisabledDropDownItemByDataTestId('context-menu-audit-info').should('exist');
+    getDisabledDropDownItemByDataTestId(contextMenuCreateAnotherOne).should('exist');
+  });
+
+  it('clicking on create another one item, go to expected url', function () {
+    //see cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json id:8
+    const jobId = '5c2cd8e5-27d0-42e3-85a1-85db5eaba459';
+    const serviceModelId = 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0';
+    const vidBaseUrl = `${Cypress.config().baseUrl}/serviceModels.htm`;
+
+    cy.openIframe('app/ui/#/instantiationStatus');
+
+    clickOnTitleAndThenOnMenuWithJobId(jobId);
+    cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuCreateAnotherOne).contains('Create another one');
+    cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuCreateAnotherOne).click();
+    cy.location().should((loc) => {
+      expect(loc.toString()).to.eq(`${vidBaseUrl}#/servicePlanning/RECREATE?serviceModelId=${serviceModelId}&jobId=${jobId}`);
+    });
+  });
+
+  it('clicking on new view edit, go to expected url', function () {
+    //see cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json id:10
+    const jobId = '850dc7d2-5240-437f-9bcd-b1ed7dc339c1';
+    const serviceModelId = 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0';
+    const vidBaseUrl = `${Cypress.config().baseUrl}/serviceModels.htm`;
+    const serviceType = 'TYLER%20SILVIA';
+
+    cy.openIframe('app/ui/#/instantiationStatus');
+    clickOnTitleAndThenOnMenuWithJobId(jobId);
+    cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuNewViewEdit).contains('New View/Edit');
+    cy.get('.dropdown-menu').getElementByDataTestsId(contextMenuNewViewEdit).click();
+    cy.location().should((location) => {
+      expect(location.toString()).to.eq(`${vidBaseUrl}#/servicePlanning/EDIT?serviceModelId=${serviceModelId}&serviceType=${serviceType}&jobId=${jobId}`);
+    });
   });
 });