import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; describe('Ticket', () => { describe('Edit basic data path', () => { const nightmare = createNightmare(); beforeAll(() => { return nightmare .waitForLogin('employee'); }); it('should click on the Tickets button of the top bar menu', done => { return nightmare .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.ticketsButton) .wait(selectors.ticketsIndex.searchTicketInput) .parsedUrl() .then(url => { expect(url.hash).toEqual('#!/ticket/index'); done(); }).catch(done.fail); }); it('should search for the ticket 11', done => { return nightmare .wait(selectors.ticketsIndex.searchTicketInput) .type(selectors.ticketsIndex.searchTicketInput, 'id:11') .click(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult) .then(result => { expect(result).toEqual(1); done(); }).catch(done.fail); }); it(`should click on the search result to access to the ticket Basic Data`, done => { return nightmare .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') // should be Bruce Wayne .waitToClick(selectors.ticketsIndex.searchResult) .waitToClick(selectors.ticketBasicData.basicDataButton) .waitForURL('data/step-one') .url() .then(url => { expect(url).toContain('data/step-one'); done(); }).catch(done.fail); }); it(`should edit the client and address of the ticket then click next`, done => { return nightmare .waitToClick(selectors.ticketBasicData.clientSelect) .waitToClick(selectors.ticketBasicData.clientSelectThirdOption) .wait(500) .waitToClick(selectors.ticketBasicData.addressSelect) .waitToClick(selectors.ticketBasicData.addressSelectSecondOption) .waitForTextInInput(selectors.ticketBasicData.addressSelect, 'Charles Xavier') .click(selectors.ticketBasicData.nextStepButton) .waitForURL('data/step-two') .url() .then(url => { expect(url).toContain('data/step-two'); done(); }).catch(done.fail); }); it(`should have no price diference`, done => { return nightmare .getInnerText(selectors.ticketBasicData.stepTwoTotalPriceDif) .then(result => { expect(result).toContain('0'); done(); }).catch(done.fail); }); it(`should click next to move on to step three`, done => { return nightmare .click(selectors.ticketBasicData.nextStepButton) .waitForURL('data/step-three') .url() .then(url => { expect(url).toContain('data/step-three'); done(); }).catch(done.fail); }); it(`should select a reason for the changes made then click on finalize`, done => { return nightmare .waitToClick(selectors.ticketBasicData.chargesReason) .waitToClick(selectors.ticketBasicData.chargesReasonFourthOption) .waitForTextInInput(selectors.ticketBasicData.chargesReason, 'No realizar modificaciones en precios') .click(selectors.ticketBasicData.finalizeButton) .waitForURL('summary') .url() .then(url => { expect(url).toContain('summary'); done(); }).catch(done.fail); }); it(`should go back to ticket.basicData section`, done => { return nightmare .waitToClick(selectors.ticketBasicData.basicDataButton) .waitForURL('data/step-one') .url() .then(url => { expect(url).toContain('data/step-one'); done(); }).catch(done.fail); }); it(`should edit the ticket agency then click next`, done => { return nightmare .waitToClick(selectors.ticketBasicData.agencySelect) .waitToClick(selectors.ticketBasicData.agencySelectOptionSix) .waitForTextInInput(selectors.ticketBasicData.agencySelect, 'Expensive') .click(selectors.ticketBasicData.nextStepButton) .waitForURL('data/step-two') .url() .then(url => { expect(url).toContain('data/step-two'); done(); }).catch(done.fail); }); it(`should have a price diference`, done => { return nightmare .getInnerText(selectors.ticketBasicData.stepTwoTotalPriceDif) .then(result => { expect(result).toContain('-20.65 €'); done(); }).catch(done.fail); }); it(`should then click next to move on to step three`, done => { return nightmare .click(selectors.ticketBasicData.nextStepButton) .waitForURL('data/step-three') .url() .then(url => { expect(url).toContain('data/step-three'); done(); }).catch(done.fail); }); it(`should select a new reason for the changes made then click on finalize`, done => { return nightmare .waitToClick(selectors.ticketBasicData.chargesReason) .waitToClick(selectors.ticketBasicData.chargesReasonFirstOption) .waitForTextInInput(selectors.ticketBasicData.chargesReason, 'Cambiar los precios en el ticket') .click(selectors.ticketBasicData.finalizeButton) .waitForURL('summary') .url() .then(url => { expect(url).toContain('summary'); done(); }).catch(done.fail); }); }); });