Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel6
outlinefalse
stylenone
typelist
printablefalse

Test case

Code Block
languagejs
  //1) open PL and change price (manual override) 
  //2) go back to PL overview and SUBMIT our PL 
  //3) open PL and check, that manual override is now not possible 
  //4) go back to PL overview and APPROVE out PL 
  //5) open PL and check, that manual override is now not possible 
  //6) go back to PL overview and REVOKE our PL 
  //7) open PL and change price (manual override) 

Code

Code Block
breakoutModewide
languagejs
const TypeID = '113.PL';//Type ID of the PL or LPG
const ID = '113';//ID of the PL or LPG
const ProductTypeID = '4846.PLI';//ypeId (hidden column) of the product
const attribute = 'resultPrice';//column attribute


//Js code for LPG calculation handling - it needs to be above cypress code or in different file
cy.waitForCalculation = LPGstatus => {
  cy.get(`[data-row-key="${TypeID}"]`).each(row => {
    if (row.html().includes('Ready')) {
      return Promise.resolve(true);
    } else {
      cy.get('[data-test=module-header-button-menu] > :nth-child(2)').click();
      cy.waitForSpinner();
      cy.waitForCalculation(LPGstatus);
    }
  });
};

describe('PL test-submit,approve,revoke', () => {
  before(() => {
    cy.login('demoPartition');//API login ("demoPartition" is the setting configured in file users.js)
  });

  beforeEach(() => {
    // Configure 'X-PriceFx-Csrf-Token' and 'X-PriceFx-jwt' cookies to be preserved after each test.
    Cypress.Cookies.preserveOnce('X-PriceFx-Csrf-Token', 'X-PriceFx-jwt');
    // Restore the logged in status by restoring the local storage
    cy.restoreLocalStorage().then(() => {
      cy.waitForSpinner();
    });
  });

  //1) open PL and change price (manual override) 
  //2) go back to PL overview and submit our PL 
  //3) open PL and check, that manual override is now not possible 
  //4) go back to PL overview and Approve out PL 
  //5) open PL and check, that manual override is now not possible 
  //6) go back to PL overview and revoke our PL 
  //7) open PL and change price (manual override) 

  //-------------------------------------------// 
  //1) open PL and change price (manual override)
  //-------------------------------------------// 
  it('PL', () => {
    cy.visit('/#/pb/pl');
    cy.waitForSpinner();

    cy.contains('.ucTableHeaderColumnContextMenu', 'ID')
      .find('[data-test="quickFilter-input"]')//click on the quick filter
      .type(ID + '{enter}', { force: true });
    cy.waitForSpinner();

    cy.get(`[data-row-key="${TypeID}"]`)//find row key for our PL/LPG
      .contains(ID)
      .click({ force: true });
    cy.waitForSpinner();


    cy.get(`[data-row-key="${ProductTypeID}"] [data-test-column="manualResultPrice"]`).as('manualResultPrice');

    //override it's price
    cy.get('@manualResultPrice').dblclick();
    cy.get('.ant-input-number-input')
      .clear()
      .type('5' + '{enter}');

    //verify the new price
    cy.get('[data-test=module-header-button-menu] > :nth-child(5)').click();
    cy.waitForSpinner();
    cy.get('@manualResultPrice').should('contain', '5.00');

    cy.get(`[data-row-key="${ProductTypeID}"] [data-test-column="${attribute}"]`).should('contain', '5.00 EUR');


    //-------------------------------------------// 
    //2) go back to PL overview and submit our PL
    //-------------------------------------------// 
    cy.contains('a', 'Price Lists').click({ force: true });
    cy.waitForSpinner();

    //click on button submit
    cy.contains('button', 'Submit')
      .click({ force: true });

    //click on Yes and check that item has workFlowStatus = Submited
    cy.get('.ant-modal-body')
      .contains('button', 'Yes').click({ force: true });
    cy.waitForSpinner();

    cy.get(`[data-row-key="${TypeID}"] [data-test-column="workflowStatus"]`).should('contain', 'Submitted');

    //-------------------------------------------// 
    //3) open PL and check, that manual override is now not possible 
    //-------------------------------------------// 
    cy.get(`[data-row-key="${TypeID}"]`)//find row key for our PL/LPG
      .contains(ID)
      .click({ force: true });
    cy.waitForSpinner();

    //check that manual override is not possible
    cy.get('@manualResultPrice').dblclick(); //@manualResulPrice is alias described above in 1. step
    cy.get('.ant-input-number-input').should('not.be.visible');

    //-------------------------------------------// 
    //4) go back to PL overview and Approve out PL 
    //-------------------------------------------// 
    cy.contains('a', 'Price Lists').click({ force: true });
    cy.waitForSpinner();

    //click on button submit
    cy.contains('button', 'View Workflow')
      .click({ force: true });
    cy.waitForSpinner();

    cy.get('.ant-table-fixed-right')
      .find('[data-test-column="approve"]').click();

    cy.waitForSpinner();
    cy.contains('button', 'OK')
      .click({ force: true });

    cy.waitForSpinner();
    cy.get('.ant-modal-close-x').first().click({ force: true });

    //-------------------------------------------// 
    //5) open PL and check, that manual override is now not possible 
    //-------------------------------------------// 
    cy.get(`[data-row-key="${TypeID}"] [data-test-column="workflowStatus"]`).should('contain', 'Approved');

    cy.get(`[data-row-key="${TypeID}"]`)//find row key for our PL/LPG
      .contains(ID)
      .click({ force: true });
    cy.waitForSpinner();

    //check that manual override is not possible
    cy.get('@manualResultPrice').dblclick(); //@manualResulPrice is alias described above in 1. step
    cy.get('.ant-input-number-input').should('not.be.visible');


    //-------------------------------------------// 
    //6) go back to PL overview and revoke our PL 
    //-------------------------------------------// 
    cy.contains('a', 'Price Lists').click({ force: true });
    cy.waitForSpinner();

    cy.get(`[data-row-key="${TypeID}"]`)//select
    .click({ force: true });

    cy.contains('button', 'Revoke')
      .click({ force: true });

    cy.waitForSpinner();
    cy.get(`[data-row-key="${TypeID}"] [data-test-column="approvalState"]`).should('contain', 'Not approved');

    //-------------------------------------------// 
    //7) open PL and change price (manual override) 
    //-------------------------------------------// 
    cy.get(`[data-row-key="${TypeID}"]`)//find row key for our PL/LPG
      .contains(ID)
      .click({ force: true });
    cy.waitForSpinner();

    //override it's price
    cy.get('@manualResultPrice').dblclick();
    cy.get('.ant-input-number-input')
      .clear()
      .type('6' + '{enter}');

    //verify the new price
    cy.get('[data-test=module-header-button-menu] > :nth-child(5)').click();
    cy.waitForSpinner();
    cy.get('@manualResultPrice').should('contain', '6.00');

    cy.get(`[data-row-key="${ProductTypeID}"] [data-test-column="${attribute}"]`).should('contain', '6.00 EUR');
  });
});

Download

...

Info

Download test for LoginAPI-PL-Approve,deny,revoke here.

...