From b667c07d12b4779ee1305f1875d57acc37430cc5 Mon Sep 17 00:00:00 2001 From: Carlos Jimenez <=> Date: Mon, 19 Nov 2018 14:33:18 +0100 Subject: [PATCH 1/2] #828 E2E client.risk --- e2e/helpers/selectors.js | 9 + .../{13_client_log.spec.js => 13_log.spec.js} | 0 e2e/paths/client-module/14_risk.spec.js | 166 ++++++++++++++++++ 3 files changed, 175 insertions(+) rename e2e/paths/client-module/{13_client_log.spec.js => 13_log.spec.js} (100%) create mode 100644 e2e/paths/client-module/14_risk.spec.js diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 04484cc9bd..2f41941fe5 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -168,6 +168,15 @@ export default { lastModificationPreviousValue: 'vn-client-log vn-table vn-td.before', lastModificationCurrentValue: 'vn-client-log vn-table vn-td.after' + }, + clientRisk: { + riskButton: `vn-left-menu a[ui-sref="client.card.risk.index"]`, + newPaymentButton: `${components.vnFloatButton}`, + newPaymentBankInut: `vn-client-risk-create > form > vn-card > div > vn-horizontal:nth-child(3) > vn-textfield:nth-child(1) > div > div > div.infix > input`, + newPaymentAmountInput: `vn-client-risk-create > form > vn-card > div > vn-horizontal:nth-child(3) > vn-textfield:nth-child(2) > div > div > div.infix > input`, + saveButton: `${components.vnSubmit}`, + firstRiskLineBalance: 'vn-client-risk-index > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)' + }, itemsIndex: { goBackToModuleIndexButton: `vn-ticket-descriptor a[href="#!/ticket/index"]`, diff --git a/e2e/paths/client-module/13_client_log.spec.js b/e2e/paths/client-module/13_log.spec.js similarity index 100% rename from e2e/paths/client-module/13_client_log.spec.js rename to e2e/paths/client-module/13_log.spec.js diff --git a/e2e/paths/client-module/14_risk.spec.js b/e2e/paths/client-module/14_risk.spec.js new file mode 100644 index 0000000000..1f46e771a1 --- /dev/null +++ b/e2e/paths/client-module/14_risk.spec.js @@ -0,0 +1,166 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('Client risk path', () => { + const nightmare = createNightmare(); + + beforeAll(() => { + return nightmare + .waitForLogin('administrative'); + }); + + it('should click on the Clients button of the top bar menu', async () => { + let url = await nightmare + .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 search for the user Petter Parker', async () => { + let resultCount = await nightmare + .wait(selectors.clientsIndex.searchResult) + .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 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 + .waitProperty(selectors.clientRisk.firstRiskLineBalance, 'innerText') + .getProperty(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 + .waitProperty(selectors.clientRisk.firstRiskLineBalance, 'innerText') + .getProperty(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 + .waitProperty(selectors.clientRisk.firstRiskLineBalance, 'innerText') + .getProperty(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.searchResult) + .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(); + }); +}); From e467a517fed49a78d9d19c066f1f33a6b4c8381a Mon Sep 17 00:00:00 2001 From: Carlos Jimenez <=> Date: Tue, 20 Nov 2018 10:15:40 +0100 Subject: [PATCH 2/2] removed fdescribe + refactor --- .../core/src/filters/specs/currency.spec.js | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/client/core/src/filters/specs/currency.spec.js b/client/core/src/filters/specs/currency.spec.js index 38e4e19db3..fa6ba24f2b 100644 --- a/client/core/src/filters/specs/currency.spec.js +++ b/client/core/src/filters/specs/currency.spec.js @@ -1,4 +1,4 @@ -fdescribe('Currency filter', () => { +describe('Currency filter', () => { let compile; let $element; @@ -11,17 +11,31 @@ fdescribe('Currency filter', () => { }); }; - it('should return the value formatted with two decimals when the value is a number and you set it a 2 as param', () => { + it('should return a ONE decimal number as per the argument', () => { + let html = `