import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; describe('Client', () => { describe('Add address path', () => { const nightmare = createNightmare(); beforeAll(() => { return nightmare .waitForLogin('employee'); }); it('should click on the Clients button of the top bar menu', done => { return nightmare .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.clientsButton) .wait(selectors.clientsIndex.createClientButton) .parsedUrl() .then(url => { expect(url.hash).toEqual('#!/client/index'); done(); }).catch(done.fail); }); it('should search for the user Bruce Banner', done => { return nightmare .wait(selectors.clientsIndex.searchResult) .type(selectors.clientsIndex.searchClientInput, 'Bruce Banner') .click(selectors.clientsIndex.searchButton) .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) .countElement(selectors.clientsIndex.searchResult) .then(result => { expect(result).toEqual(1); done(); }).catch(done.fail); }); it(`should click on the search result to access to the client addresses`, done => { return nightmare .waitForTextInElement(selectors.clientsIndex.searchResult, 'Bruce Banner') .waitToClick(selectors.clientsIndex.searchResult) .waitToClick(selectors.clientAddresses.addressesButton) .waitForURL('address/index') .url() .then(url => { expect(url).toContain('address/index'); done(); }).catch(done.fail); }); it(`should click on the add new address button to access to the new address form`, done => { return nightmare .waitToClick(selectors.clientAddresses.createAddress) .waitForURL('address/create') .url() .then(url => { expect(url).toContain('address/create'); done(); }).catch(done.fail); }); it(`should return to the addreses section by clicking the cancel button`, done => { return nightmare .waitToClick(selectors.clientAddresses.cancelButton) .waitForURL('address/index') .url() .then(url => { expect(url).toContain('address/index'); done(); }).catch(done.fail); }); it(`should now click on the add new address button to access to the new address form`, done => { return nightmare .waitToClick(selectors.clientAddresses.createAddress) .waitForURL('address/create') .url() .then(url => { expect(url).toContain('address/create'); done(); }).catch(done.fail); }); it('should receive an error after clicking save button as consignee, street and town fields are empty', done => { return nightmare .waitToClick(selectors.clientAddresses.defaultCheckboxInput) .clearInput(selectors.clientAddresses.streetAddressInput) .type(selectors.clientAddresses.postcodeInput, '10022') .waitToClick(selectors.clientAddresses.provinceInput) .waitToClick(selectors.clientAddresses.provinceSecondOption) .waitToClick(selectors.clientAddresses.agencyInput) .waitToClick(selectors.clientAddresses.agenctySecondOption) .type(selectors.clientAddresses.phoneInput, '999887744') .type(selectors.clientAddresses.mobileInput, '999887744') .waitToClick(selectors.clientFiscalData.saveButton) .waitForLastSnackbar() .then(result => { expect(result).toEqual('Some fields are invalid'); done(); }).catch(done.fail); }); it(`should create a new address with all it's data`, done => { return nightmare .type(selectors.clientAddresses.consigneeInput, 'Bruce Bunner') .type(selectors.clientAddresses.streetAddressInput, '320 Park Avenue New York') .type(selectors.clientAddresses.cityInput, 'New York') .click(selectors.clientAddresses.saveButton) .waitForLastSnackbar() .then(result => { expect(result).toEqual('Data saved!'); done(); }).catch(done.fail); }); it(`should click on the addresses button confirm the new address exists and it's the default one`, done => { return nightmare .waitToClick(selectors.clientAddresses.addressesButton) .wait(selectors.clientAddresses.defaultAddress) .getInnerText(selectors.clientAddresses.defaultAddress) .then(result => { expect(result).toContain('320 Park Avenue New York'); done(); }).catch(done.fail); }); it(`should click on the make default icon of the second address then confirm it is the default one now`, done => { return nightmare .waitToClick(selectors.clientAddresses.secondMakeDefaultStar) .waitForTextInElement(selectors.clientAddresses.defaultAddress, 'Somewhere in Thailand') .getInnerText(selectors.clientAddresses.defaultAddress) .then(result => { expect(result).toContain('Somewhere in Thailand'); done(); }).catch(done.fail); }); it(`should click on the edit icon of the default address`, done => { return nightmare .waitForTextInElement(selectors.clientAddresses.defaultAddress, 'Somewhere in Thailand') .waitToClick(selectors.clientAddresses.firstEditButton) .waitForURL('/edit') .url() .then(result => { expect(result).toContain('/edit'); done(); }).catch(done.fail); }); it(`should click on the active checkbox and receive an error to save it because it is the default address`, done => { return nightmare .waitToClick(selectors.clientAddresses.activeCheckbox) .waitToClick(selectors.clientAddresses.saveButton) .waitForLastSnackbar() .then(result => { expect(result).toEqual('The default consignee can not be unchecked'); done(); }).catch(done.fail); }); }); });