diff --git a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js index 73777c9c6..382a5f7f8 100644 --- a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js @@ -2,7 +2,7 @@ describe('InvoiceInDescriptor', () => { describe('more options', () => { beforeEach(() => cy.login('administrative')); - it.skip('should booking and unbooking the invoice properly', () => { + it('should booking and unbooking the invoice properly', () => { const checkbox = '[data-cy="vnLvIs booked"] > .q-checkbox'; cy.visit('/#/invoice-in/1/summary'); cy.selectDescriptorOption(); @@ -13,21 +13,21 @@ describe('InvoiceInDescriptor', () => { cy.validateCheckbox(checkbox, false); }); - it.skip('should delete the invoice properly', () => { + it('should delete the invoice properly', () => { cy.visit('/#/invoice-in/2/summary'); cy.selectDescriptorOption(2); cy.clickConfirm(); cy.checkNotification('invoice deleted'); }); - it.skip('should clone the invoice properly', () => { + it('should clone the invoice properly', () => { cy.visit('/#/invoice-in/3/summary'); cy.selectDescriptorOption(3); cy.clickConfirm(); cy.checkNotification('Invoice cloned'); }); - it.skip('should show the agricultural PDF properly', () => { + it('should show the agricultural PDF properly', () => { cy.visit('/#/invoice-in/6/summary'); cy.validatePdfDownload( /api\/InvoiceIns\/6\/invoice-in-pdf\?access_token=.*/, @@ -35,7 +35,7 @@ describe('InvoiceInDescriptor', () => { ); }); - it.skip('should send the agricultural PDF properly', () => { + it('should send the agricultural PDF properly', () => { cy.intercept('POST', 'api/InvoiceIns/6/invoice-in-email').as('sendEmail'); cy.visit('/#/invoice-in/6/summary'); cy.selectDescriptorOption(5); @@ -54,7 +54,7 @@ describe('InvoiceInDescriptor', () => { }); }); - it.skip('should download the file properly', () => { + it('should download the file properly', () => { cy.visit('/#/invoice-in/1/summary'); cy.validateDownload(() => cy.selectDescriptorOption(5)); }); @@ -66,17 +66,17 @@ describe('InvoiceInDescriptor', () => { cy.visit('/#/invoice-in/1/summary'); }); - it.skip('should navigate to the supplier summary', () => { + it('should navigate to the supplier summary', () => { cy.clicDescriptorAction(1); cy.url().should('to.match', /supplier\/\d+\/summary/); }); - it.skip('should navigate to the entry summary', () => { + it('should navigate to the entry summary', () => { cy.clicDescriptorAction(2); cy.url().should('to.match', /entry\/\d+\/summary/); }); - it.skip('should navigate to the invoiceIn list', () => { + it('should navigate to the invoiceIn list', () => { cy.intercept('GET', /api\/InvoiceIns\/1/).as('getCard'); cy.clicDescriptorAction(3); cy.wait('@getCard'); @@ -84,46 +84,63 @@ describe('InvoiceInDescriptor', () => { }); }); - describe('corrective', () => { + describe.only('corrective', () => { beforeEach(() => { cy.login('administrative'); - cy.visit('/#/invoice-in/1/summary'); }); - it('should create two correcting invoice', () => { - cy.visit(`/#/invoice-in/1/summary`); - corrective(); - }); - // it('should navigate to the corrected or correcting invoice page', () => { - // cy.visit('/#/invoice-in/1/summary'); - // cy.clicDescriptorAction(4); - // cy.url().should('include', '/invoice-in'); - // }); + it('should create a correcting invoice and redirect to original invoice', () => { + const originalId = 1; + cy.visit(`/#/invoice-in/${originalId}/summary`); + cy.intercept('POST', '/api/InvoiceIns/corrective').as('corrective'); - // it('should navigate to invoice-in list filtered by the corrected invoice', () => { - // cy.visit('') - // }); + const regex = new RegExp(`InvoiceIns/${originalId}\\?filter=.*`); + cy.intercept('GET', regex).as('getOriginal'); + createCorrective({ class: 'R5', type: 'sustitución', reason: 'VAT' }); + cy.wait('@corrective').then(({ response }) => { + const correctingId = response.body; + cy.url().should('include', `/invoice-in/${correctingId}/summary`); + cy.visit(`/#/invoice-in/${correctingId}/corrective`); + cy.dataCy('invoiceInCorrective_class').should('contain.value', 'R'); + cy.dataCy('invoiceInCorrective_type').should('contain.value', type); + cy.dataCy('invoiceInCorrective_reason').should('contain.value', reason); + }); + redirect(originalId); + }); + + it('should create a correcting invoice and navigate to list filtered by corrective', () => { + const originalId = 1; + cy.visit(`/#/invoice-in/${originalId}/summary`); + const regex = new RegExp(`InvoiceIns/${originalId}\\?filter=.*`); + cy.intercept('GET', regex).as('getOriginal'); + createCorrective({ class: 'R3', type: 'diferencias', reason: 'customer' }); + + redirect(originalId); + cy.clicDescriptorAction(4); + cy.url().should('to.match', /invoice-in\/list\?table=\{.*correctedFk*\}/); + cy.validateVnTableRows({ + cols: [ + { + name: 'supplierRef', + val: '1234', + operation: 'include', + }, + ], + }); + }); }); }); -function corrective() { - cy.intercept('POST', '/api/InvoiceIns/corrective').as('corrective'); +function createCorrective(opts = {}) { + const { type, reason, class: classVal } = opts; cy.selectDescriptorOption(4); - cy.selectOption('[data-cy="invoiceInDescriptorMenu_class"]', 'R5'); - cy.selectOption('[data-cy="invoiceInDescriptorMenu_type"]', 'sustitución'); - cy.selectOption('[data-cy="invoiceInDescriptorMenu_reason"]', 'VAT'); + cy.selectOption('[data-cy="invoiceInDescriptorMenu_class"]', classVal); + cy.selectOption('[data-cy="invoiceInDescriptorMenu_type"]', type); + cy.selectOption('[data-cy="invoiceInDescriptorMenu_reason"]', reason); cy.dataCy('saveCorrectiveInvoice').click(); - cy.wait('@corrective').then(({ response }) => { - const correctingId = response.body; - cy.url().should('include', `/invoice-in/${correctingId}/summary`); - cy.visit(`/#/invoice-in/${correctingId}/corrective`); - cy.dataCy('invoiceInCorrective_type') - .invoke('val') - .then((val) => expect(val).includes('sustitución')); - cy.dataCy('invoiceInCorrective_reason') - .invoke('val') - .then((val) => expect(val).includes('VAT')); - cy.dataCy('invoiceInCorrective_class') - .invoke('val') - .then((val) => expect(val).includes('R5')); - }); +} + +function redirect(subtitle) { + cy.clicDescriptorAction(4); + cy.wait('@getOriginal'); + cy.validateDescriptor({ subtitle }); } diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js index f5f1dc2d9..0a81648c0 100755 --- a/test/cypress/support/commands.js +++ b/test/cypress/support/commands.js @@ -358,12 +358,6 @@ Cypress.Commands.add('openActionsDescriptor', () => { cy.get('[data-cy="cardDescriptor"] [data-cy="descriptor-more-opts"]').click(); }); -Cypress.Commands.add('clickButtonDescriptor', (id) => { - cy.get(`.actions > .q-card__actions> .q-btn:nth-child(${id})`) - .invoke('removeAttr', 'target') - .click(); -}); - Cypress.Commands.add('openUserPanel', () => { cy.dataCy('userPanel_btn').click(); }); @@ -453,9 +447,10 @@ Cypress.Commands.add('waitRequest', (alias, cb) => { }); Cypress.Commands.add('validateDescriptor', (toCheck = {}) => { - const { title, listbox = {} } = toCheck; + const { title, subtitle, listbox = {} } = toCheck; if (title) cy.dataCy('cardDescriptor_title').contains(title); + if (subtitle) cy.dataCy('cardDescriptor_subtitle').contains(subtitle); for (const index in listbox) cy.get('[data-cy="cardDescriptor_listbox"] > *') @@ -477,7 +472,9 @@ Cypress.Commands.add('validateVnTableRows', (opts = {}) => { .invoke('text') .then((text) => { if (type === 'string') - expect(text.trim().toLowerCase()).to.equal(val.toLowerCase()); + expect(text.trim().toLowerCase()).to[operation]( + val.toLowerCase(), + ); if (type === 'number') cy.checkNumber(text, val, operation); if (type === 'date') cy.checkDate(text, val, operation); });