///
///
import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder';
import {AsyncInstantiationModel} from '../../support/jsonBuilders/models/asyncInstantiation.model';
import {
COMPLETED_WITH_ERRORS,
INPROGRESS,
PAUSE,
PAUSE_UPON_COMPLETION,
PENDING,
STOPPED,
SUCCESS_CIRCLE,
UNKNOWN,
X_O
} from "../../../src/app/instantiationStatus/instantiationStatus.component.service";
describe('Instantiation status', function () {
var jsonBuilderInstantiationBuilder : JsonBuilder = new JsonBuilder();
var asyncRes: Array;
const contextMenuCreateAnotherOne = 'context-menu-create-another-one';
const contextMenuNewViewEdit = 'context-menu-new-view-edit';
beforeEach(() => {
cy.clearSessionStorage();
cy.setReduxState();
cy.preventErrorsOnLoading();
cy.initAAIMock();
cy.initVidMock();
jsonBuilderInstantiationBuilder.basicMock('cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
Cypress.config('baseUrl') + "/asyncInstantiation**",
(res: any) => {
asyncRes = res;
return res;
});
cy.login();
});
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 INPROGRESS;
case 'PAUSED' :
return PAUSE;
case 'FAILED' :
return X_O;
case 'COMPLETED' :
return SUCCESS_CIRCLE;
case 'STOPPED' :
return STOPPED;
case 'COMPLETED_WITH_ERRORS' :
return COMPLETED_WITH_ERRORS;
case 'COMPLETED_AND_PAUSED' :
return PAUSE_UPON_COMPLETION;
default:
return UNKNOWN;
}
}
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();
}
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');
});
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}`);
});
});
});