| import ObjectLike = Cypress.ObjectLike; |
| |
| describe('Drawing Board: Instantiation Templates', function () { |
| |
| describe('Instantiation templates ', () => { |
| |
| beforeEach(() => { |
| cy.clearSessionStorage(); |
| cy.setTestApiParamToVNF(); |
| cy.initAAIMock(); |
| cy.initVidMock(); |
| cy.initDrawingBoardUserPermission(); |
| cy.login(); |
| |
| mockAsyncBulkResponse(); |
| }); |
| |
| afterEach(() => { |
| cy.screenshot(); |
| }); |
| |
| describe('Load Page and Deploy', () => { |
| |
| it(`Given a stored template - when click "deploy" - then a coherent request should be sent upon deploy`, function () { |
| |
| loadDrawingBoardWithRecreateMode(); |
| |
| // Then... |
| cy.getElementByDataTestsId("node-vProbe_NC_VNF 0").should('be.visible'); |
| assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd(); |
| }); |
| |
| it('View a template’s details as expected', ()=> { |
| |
| loadDrawingBoardWithRecreateMode(); |
| |
| // Then... |
| cy.drawingBoardTreeOpenContextMenuByElementDataTestId("node-21ae311e-432f-4c54-b855-446d0b8ded72-vProbe_NC_VNF 0") |
| .drawingBoardTreeClickOnContextMenuOptionByName('Edit') |
| .getElementByDataTestsId("instanceName").should('have.value', 'hvf6arlba007') |
| .getElementByDataTestsId("productFamily").should('contain', 'Emanuel') |
| .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1') |
| .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6') |
| .getElementByDataTestsId("lineOfBusiness").should('contain', 'zzz1') |
| .getElementByDataTestsId("rollback").should('contain', 'Rollback') |
| |
| |
| .getElementByDataTestsId("cancelButton").click(); |
| |
| cy.drawingBoardTreeOpenContextMenuByElementDataTestId("node-c5b26cc1-a66f-4b69-aa23-6abc7c647c88-vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0") |
| .drawingBoardTreeClickOnContextMenuOptionByName('Edit') |
| .getElementByDataTestsId("instanceName").should('have.value', 'hvf6arlba007_lba_Base_01') |
| .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6') |
| .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1') |
| .getElementByDataTestsId("rollback").should('contain', 'Rollback') |
| |
| .getElementByDataTestsId("cancelButton").click(); |
| |
| cy.drawingBoardTreeOpenContextMenuByElementDataTestId("node-c09e4530-8fd8-418f-9483-2f57ce927b05-vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1") |
| .drawingBoardTreeClickOnContextMenuOptionByName('Edit') |
| .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6') |
| .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1') |
| .getElementByDataTestsId("rollback").should('contain', 'Rollback') |
| .getElementByDataTestsId("cancelButton").click(); |
| |
| |
| |
| assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd(); |
| }); |
| |
| it(`Edit the service`, function () { |
| |
| loadDrawingBoardWithRecreateMode(); |
| |
| cy.openServiceContextMenu() |
| .getElementByDataTestsId("context-menu-header-edit-item").click({force : true}) |
| }); |
| }); |
| }); |
| |
| }); |
| |
| function loadDrawingBoardWithRecreateMode() { |
| const serviceModelId = '6cfeeb18-c2b0-49df-987a-da47493c8e38'; |
| const templateUuid = "46390edd-7100-46b2-9f18-419bd24fb60b"; |
| |
| const drawingBoardAction = `RECREATE`; |
| const templateTopologyEndpoint = "templateTopology"; |
| cy.route(`**/rest/models/services/${serviceModelId}`, |
| 'fixture:../support/jsonBuilders/mocks/jsons/instantiationTemplates/templates__service_model.json') |
| .as('serviceModel'); |
| |
| cy.route(`**/asyncInstantiation/${templateTopologyEndpoint}/${templateUuid}`, |
| 'fixture:../../../vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json') |
| .as('templateTopology'); |
| |
| // When... |
| |
| cy.openIframe(`app/ui/#/servicePlanning/${drawingBoardAction}` + |
| `?jobId=${templateUuid}` + |
| `&serviceModelId=${serviceModelId}`); |
| |
| cy.wait('@serviceModel'); |
| cy.wait('@templateTopology'); |
| } |
| |
| function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd() { |
| cy.getDrawingBoardDeployBtn().click(); |
| cy.wait('@expectedPostAsyncInstantiation').then(xhr => { |
| cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json').then((expectedResult) => { |
| convertRollbackOnFailureValueFromStringToBoolean(expectedResult); |
| |
| let xhrBodyWithoutIsDirtyField = removeIsDirtyFieldFromXhrRequestBody(xhr); |
| cy.deepCompare(xhrBodyWithoutIsDirtyField, expectedResult); |
| }); |
| }); |
| } |
| |
| //We use this function because the deployService() on drawing-board-header.component class |
| // changes rollbackOnFailure value from string type to boolean. |
| function convertRollbackOnFailureValueFromStringToBoolean(expectedResult: any) { |
| expectedResult.rollbackOnFailure = Boolean(expectedResult.rollbackOnFailure); |
| } |
| |
| function removeIsDirtyFieldFromXhrRequestBody(xhr : any) { |
| let xhrTempBody = JSON.parse(JSON.stringify(xhr.request.body)); |
| delete xhrTempBody.isDirty; |
| return xhrTempBody; |
| } |
| |
| function mockAsyncBulkResponse() { |
| cy.server().route({ |
| url: Cypress.config('baseUrl') + '/asyncInstantiation/bulk', |
| method: 'POST', |
| status: 200, |
| response: "[]", |
| }).as("expectedPostAsyncInstantiation"); |
| } |