diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 1c3e814ad..c4deb0d94 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -47,6 +47,10 @@ export default { }, fiscalData: { fiscalDataButton: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-empty > vn-left-menu > vn-card > div > vn-vertical > vn-actions > vn-horizontal > ul > vn-menu-item:nth-child(2) > li > a', - addressInput: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-auto > vn-vertical > vn-client-fiscal-data > form > vn-card > div > vn-vertical > vn-horizontal:nth-child(3) > vn-textfield:nth-child(1) > div > input' + addressInput: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-auto > vn-vertical > vn-client-fiscal-data > form > vn-card > div > vn-vertical > vn-horizontal:nth-child(3) > vn-textfield:nth-child(1) > div > input', + hastToInvoiceCheckboxLabel: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-auto > vn-vertical > vn-client-fiscal-data > form > vn-card > div > vn-vertical > vn-horizontal:nth-child(2) > vn-one:nth-child(1) > vn-check > label', + hastToInvoiceCheckboxInput: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-auto > vn-vertical > vn-client-fiscal-data > form > vn-card > div > vn-vertical > vn-horizontal:nth-child(2) > vn-one:nth-child(1) > vn-check > label > input', + invoiceByMailCheckbox: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-auto > vn-vertical > vn-client-fiscal-data > form > vn-card > div > vn-vertical > vn-horizontal:nth-child(2) > vn-check:nth-child(2) > label > span.mdl-checkbox__ripple-container.mdl-js-ripple-effect.mdl-ripple--center', + saveButton: 'body > vn-app > vn-vertical > vn-vertical > vn-client-card > vn-horizontal > vn-auto > vn-vertical > vn-client-fiscal-data > form > vn-button-bar > vn-submit > input' } }; diff --git a/e2e/paths/create_client_path.spec.js b/e2e/paths/create_client_path.spec.js index 837921863..950757606 100644 --- a/e2e/paths/create_client_path.spec.js +++ b/e2e/paths/create_client_path.spec.js @@ -5,485 +5,217 @@ import {catchErrors} from '../../services/utils/jasmineHelpers'; const nightmare = createNightmare(); const moduleAccessViewHashURL = '#!/'; -describe('warm up', () => { - it('should warm up login and fixtures', done => { +describe('create client path', () => { + describe('warm up', () => { + it('should warm up login and fixtures', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .waitToClick(selectors.globalItems.logOutButton) + .then(() => { + done(); + }) + .catch(catchErrors(done)); + }); + }); + + it('should log in', done => { nightmare .login() .waitForURL(moduleAccessViewHashURL) - .waitToClick(selectors.globalItems.logOutButton) - .then(() => { + .url() + .then(url => { + expect(url).toBe(config.url + moduleAccessViewHashURL); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should access to the clients index by clicking the clients button', done => { + nightmare + .click(selectors.moduleAccessView.clientsSectionButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toBe(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should search for the user Carol Danvers to confirm it isn't created yet`, done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Carol Danvers') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 0) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toBe(0); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should access to the create client view by clicking the create-client floating button', done => { + nightmare + .click(selectors.clientsIndex.createClientButton) + .wait(selectors.createClientView.createButton) + .url() + .then(url => { + expect(url).toBe(config.url + '#!/create'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty', done => { + nightmare + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe('No hay cambios que guardar'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty but name', done => { + nightmare + .waitForSnackbarReset() + .type(selectors.createClientView.name, 'Carol Danvers') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`Error: La instancia`); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty but Tax Number', done => { + nightmare + .waitForSnackbarReset() + .clearInput(selectors.createClientView.name) + .type(selectors.createClientView.taxNumber, 'AVG tax') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`Error: La instancia`); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty but Business Name', done => { + nightmare + .waitForSnackbarReset() + .clearInput(selectors.createClientView.taxNumber) + .type(selectors.createClientView.businessName, 'Avengers team') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`Error: La instancia`); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty but User Name', done => { + nightmare + .waitForSnackbarReset() + .clearInput(selectors.createClientView.businessName) + .type(selectors.createClientView.userName, 'CaptainMarvel') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`Error: La instancia`); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty but email while email have incorrect format', done => { + nightmare + .waitForSnackbarReset() + .clearInput(selectors.createClientView.userName) + .type(selectors.createClientView.email, 'I will save the Avengers!') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`Algunos campos no son válidos`); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should receive an error when clicking the create button having all the form fields empty but email', done => { + nightmare + .waitForSnackbarReset() + .clearInput(selectors.createClientView.email) + .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`Error: La instancia`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should create a new user with all it's data`, done => { + nightmare + .waitForSnackbarReset() + .wait(selectors.createClientView.email) + .clearInput(selectors.createClientView.email) + .type(selectors.createClientView.name, 'Carol Danvers') + .type(selectors.createClientView.taxNumber, 'Avengers Tax Number') + .type(selectors.createClientView.businessName, 'AVG tax') + .type(selectors.createClientView.userName, 'CaptainMarvel') + .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should click on the Clients button of the top bar menu', done => { + nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.clientsButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toBe(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should search for the user Carol Danvers to confirm it exists`, done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Carol Danvers') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toBe(1); done(); }) .catch(catchErrors(done)); }); }); -describe('Clients path', () => { - describe('Create', () => { - it('should log in', done => { - nightmare - .login() - .waitForURL(moduleAccessViewHashURL) - .url() - .then(url => { - expect(url).toBe(config.url + moduleAccessViewHashURL); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should access to the clients index by clicking the clients button', done => { - nightmare - .click(selectors.moduleAccessView.clientsSectionButton) - .wait(selectors.clientsIndex.createClientButton) - .url() - .then(url => { - expect(url).toBe(config.url + '#!/clients'); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should search for the user Carol Danvers to confirm it isn't created yet`, done => { - nightmare - .wait(selectors.clientsIndex.searchResult) - .type(selectors.clientsIndex.searchClientInput, 'Carol Danvers') - .click(selectors.clientsIndex.searchButton) - .waitForNumberOfElements(selectors.clientsIndex.searchResult, 0) - .countSearchResults(selectors.clientsIndex.searchResult) - .then(result => { - expect(result).toBe(0); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should access to the create client view by clicking the create-client floating button', done => { - nightmare - .click(selectors.clientsIndex.createClientButton) - .wait(selectors.createClientView.createButton) - .url() - .then(url => { - expect(url).toBe(config.url + '#!/create'); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty', done => { - nightmare - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe('No hay cambios que guardar'); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty but name', done => { - nightmare - .waitForSnackbarReset() - .type(selectors.createClientView.name, 'Carol Danvers') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toContain(`Error: La instancia`); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty but Tax Number', done => { - nightmare - .waitForSnackbarReset() - .clearInput(selectors.createClientView.name) - .type(selectors.createClientView.taxNumber, 'AVG tax') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toContain(`Error: La instancia`); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty but Business Name', done => { - nightmare - .waitForSnackbarReset() - .clearInput(selectors.createClientView.taxNumber) - .type(selectors.createClientView.businessName, 'Avengers team') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toContain(`Error: La instancia`); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty but User Name', done => { - nightmare - .waitForSnackbarReset() - .clearInput(selectors.createClientView.businessName) - .type(selectors.createClientView.userName, 'CaptainMarvel') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toContain(`Error: La instancia`); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty but email while email have incorrect format', done => { - nightmare - .waitForSnackbarReset() - .clearInput(selectors.createClientView.userName) - .type(selectors.createClientView.email, 'I will save the Avengers!') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`Algunos campos no son válidos`); - done(); - }) - .catch(catchErrors(done)); - }); - - it('should receive an error when clicking the create button having all the form fields empty but email', done => { - nightmare - .waitForSnackbarReset() - .clearInput(selectors.createClientView.email) - .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toContain(`Error: La instancia`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should create a new user with all it's data`, done => { - nightmare - .waitForSnackbarReset() - .wait(selectors.createClientView.email) - .clearInput(selectors.createClientView.email) - .type(selectors.createClientView.name, 'Carol Danvers') - .type(selectors.createClientView.taxNumber, 'Avengers Tax Number') - .type(selectors.createClientView.businessName, 'Avengers Team') - .type(selectors.createClientView.userName, 'CaptainMarvel') - .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') - .click(selectors.createClientView.createButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toContain(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - }); - - describe('Index', () => { - it('should click on the Clients button of the top bar menu', done => { - nightmare - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.clientsButton) - .wait(selectors.clientsIndex.createClientButton) - .url() - .then(url => { - expect(url).toBe(config.url + '#!/clients'); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should search for the user Carol Danvers to confirm it exists`, done => { - nightmare - .wait(selectors.clientsIndex.searchResult) - .type(selectors.clientsIndex.searchClientInput, 'Carol Danvers') - .click(selectors.clientsIndex.searchButton) - .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) - .countSearchResults(selectors.clientsIndex.searchResult) - .then(result => { - expect(result).toBe(1); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should click on the search result to access to the client's basic data`, done => { - nightmare - .waitForTextInElement(selectors.clientsIndex.searchResult, 'Carol') - .waitToClick(selectors.clientsIndex.searchResult) - .waitForURL('basic-data') - .url() - .then(url => { - expect(url).toContain('basic-data'); - done(); - }) - .catch(catchErrors(done)); - }); - }); - describe('Basic Data', () => { - it(`should edit the name`, done => { - nightmare - .wait(selectors.basicData.nameInput) - .clearInput(selectors.basicData.nameInput) - .type(selectors.basicData.nameInput, 'Carol Danvers Edited') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the name have been edited`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.nameInput) - .getInputValue(selectors.basicData.nameInput) - .then(result => { - expect(result).toBe(`Carol Danvers Edited`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should edit the tax number`, done => { - nightmare - .wait(selectors.basicData.taxNumberInput) - .clearInput(selectors.basicData.taxNumberInput) - .type(selectors.basicData.taxNumberInput, 'AVG tax Edited') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the tax number have been edited`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.taxNumberInput) - .getInputValue(selectors.basicData.taxNumberInput) - .then(result => { - expect(result).toBe(`AVG tax Edited`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should edit the social name`, done => { - nightmare - .wait(selectors.basicData.socialNameInput) - .clearInput(selectors.basicData.socialNameInput) - .type(selectors.basicData.socialNameInput, 'Avengers Team Edited') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the social name have been edited`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.socialNameInput) - .getInputValue(selectors.basicData.socialNameInput) - .then(result => { - expect(result).toBe(`Avengers Team Edited`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should add the landline phone number`, done => { - nightmare - .wait(selectors.basicData.phoneInput) - .type(selectors.basicData.phoneInput, '123456789') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the landline phone number have been added`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.phoneInput) - .getInputValue(selectors.basicData.phoneInput) - .then(result => { - expect(result).toBe('123456789'); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should add the mobile phone number`, done => { - nightmare - .wait(selectors.basicData.mobileInput) - .type(selectors.basicData.mobileInput, '987654321') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the mobile phone number have been added`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.mobileInput) - .getInputValue(selectors.basicData.mobileInput) - .then(result => { - expect(result).toBe('987654321'); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should add the fax number`, done => { - nightmare - .wait(selectors.basicData.faxInput) - .type(selectors.basicData.faxInput, '432198765') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the fax number have been added`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.faxInput) - .getInputValue(selectors.basicData.faxInput) - .then(result => { - expect(result).toBe('432198765'); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should edit the email`, done => { - nightmare - .wait(selectors.basicData.emailInput) - .clearInput(selectors.basicData.emailInput) - .type(selectors.basicData.emailInput, 'CarolDanversEdited@verdnatura.es') - .click(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the email have been edited`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(selectors.basicData.emailInput) - .getInputValue(selectors.basicData.emailInput) - .then(result => { - expect(result).toBe('CarolDanversEdited@verdnatura.es'); - done(); - }) - .catch(catchErrors(done)); - }); - - // it(`should select the sales person`, done => { - // nightmare - // .wait(selectors.basicData.salesPersonInput) - // .select(selectors.basicData.salesPersonInput, '') // not working quite yet - // .click(selectors.basicData.saveButton) - // .wait(selectors.globalItems.snackbarIsActive) - // .getInnerText(selectors.globalItems.snackbarIsActive) - // .then(result => { - // expect(result).toBe(`¡Datos guardados!`); - // done(); - // }) - // .catch(catchErrors(done)); - // }); - - it(`should select the channel`, done => { - nightmare - .waitToClick(selectors.basicData.channelInput) - .waitToClick(selectors.basicData.channelInput) - .waitToClick(selectors.basicData.channelMetropolisOption) - .waitToClick(selectors.basicData.saveButton) - .wait(selectors.globalItems.snackbarIsActive) - .getInnerText(selectors.globalItems.snackbarIsActive) - .then(result => { - expect(result).toBe(`¡Datos guardados!`); - done(); - }) - .catch(catchErrors(done)); - }); - - it(`should confirm the channel have been selected`, done => { - nightmare - .waitForSnackbarReset() - .click(selectors.fiscalData.fiscalDataButton) - .wait(selectors.fiscalData.addressInput) - .click(selectors.basicData.basicDataButton) - .wait(100) - .getInputValue(selectors.basicData.channelInput) - .then(result => { - expect(result).toBe('Metropolis newspaper'); - done(); - }) - .catch(catchErrors(done)); - }); - }); -}); diff --git a/e2e/paths/edit_basic_data.spec.js b/e2e/paths/edit_basic_data.spec.js new file mode 100644 index 000000000..d8d79a9e9 --- /dev/null +++ b/e2e/paths/edit_basic_data.spec.js @@ -0,0 +1,328 @@ +import config from '../helpers/config.js'; +import createNightmare from '../helpers/nightmare'; +import selectors from '../helpers/selectors.js'; +import {catchErrors} from '../../services/utils/jasmineHelpers'; +const nightmare = createNightmare(); +const moduleAccessViewHashURL = '#!/'; + +describe('Edit basicData path', () => { + describe('warm up', () => { + it('should warm up login and fixtures', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .waitToClick(selectors.globalItems.logOutButton) + .then(() => { + done(); + }) + .catch(catchErrors(done)); + }); + }); + + it('should log in', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .url() + .then(url => { + expect(url).toBe(config.url + moduleAccessViewHashURL); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should click on the Clients button of the top bar menu', done => { + nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.clientsButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toBe(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should search for the user Bruce Wayne`, done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Bruce Wayne') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toBe(1); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should click on the search result to access to the client's basic data`, done => { + nightmare + .waitForTextInElement(selectors.clientsIndex.searchResult, 'Bruce Wayne') + .waitToClick(selectors.clientsIndex.searchResult) + .waitForURL('basic-data') + .url() + .then(url => { + expect(url).toContain('basic-data'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should edit the name`, done => { + nightmare + .wait(selectors.basicData.nameInput) + .clearInput(selectors.basicData.nameInput) + .type(selectors.basicData.nameInput, 'Carol Danvers Edited') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the name have been edited`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .getInputValue(selectors.basicData.nameInput) + .then(result => { + expect(result).toBe(`Carol Danvers Edited`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should edit the tax number`, done => { + nightmare + .wait(selectors.basicData.taxNumberInput) + .clearInput(selectors.basicData.taxNumberInput) + .type(selectors.basicData.taxNumberInput, 'AVG tax Edited') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the tax number have been edited`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.taxNumberInput) + .getInputValue(selectors.basicData.taxNumberInput) + .then(result => { + expect(result).toBe(`AVG tax Edited`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should edit the social name`, done => { + nightmare + .wait(selectors.basicData.socialNameInput) + .clearInput(selectors.basicData.socialNameInput) + .type(selectors.basicData.socialNameInput, 'Avengers Team Edited') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the social name have been edited`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.socialNameInput) + .getInputValue(selectors.basicData.socialNameInput) + .then(result => { + expect(result).toBe(`Avengers Team Edited`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should add the landline phone number`, done => { + nightmare + .wait(selectors.basicData.phoneInput) + .clearInput(selectors.basicData.phoneInput) + .type(selectors.basicData.phoneInput, '123456789') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the landline phone number have been added`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.phoneInput) + .getInputValue(selectors.basicData.phoneInput) + .then(result => { + expect(result).toBe('123456789'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should add the mobile phone number`, done => { + nightmare + .wait(selectors.basicData.mobileInput) + .clearInput(selectors.basicData.mobileInput) + .type(selectors.basicData.mobileInput, '987654321') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the mobile phone number have been added`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.mobileInput) + .getInputValue(selectors.basicData.mobileInput) + .then(result => { + expect(result).toBe('987654321'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should add the fax number`, done => { + nightmare + .wait(selectors.basicData.faxInput) + .clearInput(selectors.basicData.faxInput) + .type(selectors.basicData.faxInput, '432198765') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the fax number have been added`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.faxInput) + .getInputValue(selectors.basicData.faxInput) + .then(result => { + expect(result).toBe('432198765'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should edit the email`, done => { + nightmare + .wait(selectors.basicData.emailInput) + .clearInput(selectors.basicData.emailInput) + .type(selectors.basicData.emailInput, 'CarolDanversEdited@verdnatura.es') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the email have been edited`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.emailInput) + .getInputValue(selectors.basicData.emailInput) + .then(result => { + expect(result).toBe('CarolDanversEdited@verdnatura.es'); + done(); + }) + .catch(catchErrors(done)); + }); + + // it(`should select the sales person`, done => { + // nightmare + // .wait(selectors.basicData.salesPersonInput) + // .select(selectors.basicData.salesPersonInput, '') // not working quite yet + // .click(selectors.basicData.saveButton) + // .wait(selectors.globalItems.snackbarIsActive) + // .getInnerText(selectors.globalItems.snackbarIsActive) + // .then(result => { + // expect(result).toBe(`¡Datos guardados!`); + // done(); + // }) + // .catch(catchErrors(done)); + // }); + + it(`should select the channel`, done => { + nightmare + .waitToClick(selectors.basicData.channelInput) + .waitToClick(selectors.basicData.channelInput) + .waitToClick(selectors.basicData.channelMetropolisOption) + .waitToClick(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the channel have been selected`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(100) + .getInputValue(selectors.basicData.channelInput) + .then(result => { + expect(result).toBe('Metropolis newspaper'); + done(); + }) + .catch(catchErrors(done)); + }); +}); diff --git a/e2e/paths/edit_fiscal_data.spec.js b/e2e/paths/edit_fiscal_data.spec.js new file mode 100644 index 000000000..32662eddd --- /dev/null +++ b/e2e/paths/edit_fiscal_data.spec.js @@ -0,0 +1,105 @@ +import config from '../helpers/config.js'; +import createNightmare from '../helpers/nightmare'; +import selectors from '../helpers/selectors.js'; +import {catchErrors} from '../../services/utils/jasmineHelpers'; +const nightmare = createNightmare(); +const moduleAccessViewHashURL = '#!/'; + +describe('Edit fiscalData path', () => { + describe('warm up', () => { + it('should warm up login and fixtures', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .waitToClick(selectors.globalItems.logOutButton) + .then(() => { + done(); + }) + .catch(catchErrors(done)); + }); + }); + + it('should log in', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .url() + .then(url => { + expect(url).toBe(config.url + moduleAccessViewHashURL); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should click on the Clients button of the top bar menu', done => { + nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.clientsButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toBe(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should search for the user Bruce Banner`, done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Bruce Banner') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toBe(1); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should click on the search result to access to the client's fiscal data`, done => { + nightmare + .waitForTextInElement(selectors.clientsIndex.searchResult, 'Bruce Banner') + .waitToClick(selectors.clientsIndex.searchResult) + .waitToClick(selectors.fiscalData.fiscalDataButton) + .waitForURL('fiscal-data') + .url() + .then(url => { + expect(url).toContain('fiscal-data'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should uncheck the hasToInvoice checkbox`, done => { + nightmare + .waitToClick(selectors.fiscalData.hastToInvoiceCheckboxLabel) + .waitToClick(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toBe('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm hasToInvoice checkbox is unchecked`, done => { + nightmare + .waitForSnackbarReset() + .waitToClick(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .waitToClick(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.hastToInvoiceCheckboxLabel) + .evaluate(selector => { + return document.querySelector(selector).checked; + }, selectors.fiscalData.hastToInvoiceCheckboxInput) + .then(value => { + expect(value).toBeFalsy(); + done(); + }) + .catch(catchErrors(done)); + }); +});