import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; describe('Client risk path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('administrative', 'client') .accessToSearchResult('Petter Parker') .accessToSection('client.card.risk.index'); }); it('should click the new payment button', async() => { let url = await nightmare .waitToClick(selectors.clientRisk.newPaymentButton) .waitForURL('/risk') .parsedUrl(); expect(url.hash).toContain('/risk'); }); it('should create a new payment that clears the debt', async() => { let result = await nightmare .clearInput(selectors.clientRisk.newPaymentBankInut) .type(selectors.clientRisk.newPaymentBankInut, '2') .waitToClick(selectors.clientRisk.saveButton) .waitForLastSnackbar(); expect(result).toContain('Data saved!'); }); it('should check balance is now 0', async() => { let result = await nightmare .waitToGetProperty(selectors.clientRisk.firstRiskLineBalance, 'innerText'); expect(result).toEqual('0.00 €'); }); it('should now click the new payment button', async() => { let url = await nightmare .waitToClick(selectors.clientRisk.newPaymentButton) .waitForURL('/risk') .parsedUrl(); expect(url.hash).toContain('/risk'); }); it('should create a new payment that sets the balance to positive value', async() => { let result = await nightmare .clearInput(selectors.clientRisk.newPaymentAmountInput) .type(selectors.clientRisk.newPaymentAmountInput, '100') .waitToClick(selectors.clientRisk.saveButton) .waitForLastSnackbar(); expect(result).toContain('Data saved!'); }); it('should check balance is now 100', async() => { let result = await nightmare .waitToGetProperty(selectors.clientRisk.firstRiskLineBalance, 'innerText'); expect(result).toEqual('100.00 €'); }); it('should again click the new payment button', async() => { let url = await nightmare .waitToClick(selectors.clientRisk.newPaymentButton) .waitForURL('/risk') .parsedUrl(); expect(url.hash).toContain('/risk'); }); it('should create a new payment that sets the balance back to the original negative value', async() => { let result = await nightmare .clearInput(selectors.clientRisk.newPaymentAmountInput) .type(selectors.clientRisk.newPaymentAmountInput, '-150') .waitToClick(selectors.clientRisk.saveButton) .waitForLastSnackbar(); expect(result).toContain('Data saved!'); }); it('should check balance is now -50', async() => { let result = await nightmare .waitToGetProperty(selectors.clientRisk.firstRiskLineBalance, 'innerText'); expect(result).toEqual('-50.00 €'); }); it('should now click on the Clients button of the top bar menu', async() => { let url = await nightmare .waitForLogin('employee') .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.clientsButton) .wait(selectors.clientsIndex.createClientButton) .parsedUrl(); expect(url.hash).toEqual('#!/client/index'); }); it('should now search for the user Petter Parker', async() => { let resultCount = await nightmare .wait(selectors.clientsIndex.searchClientInput) .type(selectors.clientsIndex.searchClientInput, 'Petter Parker') .click(selectors.clientsIndex.searchButton) .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) .countElement(selectors.clientsIndex.searchResult); expect(resultCount).toEqual(1); }); it(`should click on the search result to access to the client's risk`, async() => { let url = await nightmare .waitForTextInElement(selectors.clientsIndex.searchResult, 'Petter Parker') .waitToClick(selectors.clientsIndex.searchResult) .waitToClick(selectors.clientRisk.riskButton) .waitForURL('/risk') .parsedUrl(); expect(url.hash).toContain('/risk'); }); it('should not be able to click the new payment button as it isnt present', async() => { let result = await nightmare .exists(selectors.clientRisk.newPaymentButton); expect(result).toBeFalsy(); }); });