import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/helpers'; 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', () => { 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'); }); }); it('should search for the user Bruce Banner', () => { 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); }); }); it(`should click on the search result to access to the client addresses`, () => { 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'); }); }); it(`should click on the add new address button to access to the new address form`, () => { return nightmare .waitToClick(selectors.clientAddresses.createAddress) .waitForURL('address/create') .url() .then(url => { expect(url).toContain('address/create'); }); }); it(`should return to the addreses section by clicking the cancel button`, () => { return nightmare .waitToClick(selectors.clientAddresses.cancelButton) .waitForURL('address/index') .url() .then(url => { expect(url).toContain('address/index'); }); }); it(`should now click on the add new address button to access to the new address form`, () => { return nightmare .waitToClick(selectors.clientAddresses.createAddress) .waitForURL('address/create') .url() .then(url => { expect(url).toContain('address/create'); }); }); it('should receive an error after clicking save button as consignee, street and town fields are empty', () => { 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'); }); }); it(`should create a new address with all it's data`, () => { 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!'); }); }); it(`should click on the addresses button confirm the new address exists and it's the default one`, () => { return nightmare .waitToClick(selectors.clientAddresses.addressesButton) .wait(selectors.clientAddresses.defaultAddress) .getInnerText(selectors.clientAddresses.defaultAddress) .then(result => { expect(result).toContain('320 Park Avenue New York'); }); }); it(`should click on the make default icon of the second address then confirm it is the default one now`, () => { 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'); }); }); it(`should click on the edit icon of the default address`, () => { return nightmare .waitForTextInElement(selectors.clientAddresses.defaultAddress, 'Somewhere in Thailand') .waitToClick(selectors.clientAddresses.firstEditButton) .waitForURL('/edit') .url() .then(result => { expect(result).toContain('/edit'); }); }); it(`should click on the active checkbox and receive an error to save it because it is the default address`, () => { return nightmare .waitToClick(selectors.clientAddresses.activeCheckbox) .waitToClick(selectors.clientAddresses.saveButton) .waitForLastSnackbar() .then(result => { expect(result).toEqual('The default consignee can not be unchecked'); }); }); }); });