From 0f1b33802e5fe51b4fb71a8d01ad2ffe6c1874ef Mon Sep 17 00:00:00 2001 From: carlosjr Date: Wed, 15 Sep 2021 13:24:01 +0200 Subject: [PATCH 1/5] refactor(newbankentity): added id as entity code input + translation --- front/salix/components/bank-entity/index.html | 19 ++++++++++++++----- .../components/bank-entity/locale/es.yml | 3 ++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 3a7786607..b6cc1f4ee 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -14,8 +14,6 @@ ng-model="$ctrl.data.name" required="true"> - - - + + + + - + - + \ No newline at end of file diff --git a/front/salix/components/bank-entity/locale/es.yml b/front/salix/components/bank-entity/locale/es.yml index fe5160572..874a42393 100644 --- a/front/salix/components/bank-entity/locale/es.yml +++ b/front/salix/components/bank-entity/locale/es.yml @@ -9,4 +9,5 @@ The country can't be empty: El país no puede quedar vacío The postcode has been created. You can save the data now: Se ha creado el código postal. Ahora puedes guardar los datos The city has been created: Se ha creado la ciudad The province has been created: Se ha creado la provincia -The bank entity has been created. You can save the data now: Se ha creado la entidad bancaria. Puedes guardar los datos ahora \ No newline at end of file +The bank entity has been created. You can save the data now: Se ha creado la entidad bancaria. Puedes guardar los datos ahora +Entity code: Código de la entidad \ No newline at end of file From d8a2302b181ae0d75dd00426f7ae55342ecb060e Mon Sep 17 00:00:00 2001 From: carlosjr Date: Wed, 15 Sep 2021 13:25:26 +0200 Subject: [PATCH 2/5] refactor(newbankentity): both client.billingdata and supplier.account now use newbankentity component --- modules/client/front/billing-data/index.html | 55 ++----------------- modules/client/front/billing-data/index.js | 7 +-- .../client/front/billing-data/index.spec.js | 18 ++---- .../client/front/billing-data/locale/es.yml | 3 +- modules/supplier/front/account/index.html | 1 + modules/supplier/front/account/index.spec.js | 2 +- 6 files changed, 16 insertions(+), 70 deletions(-) diff --git a/modules/client/front/billing-data/index.html b/modules/client/front/billing-data/index.html index b9c20ec24..ae1ad85a5 100644 --- a/modules/client/front/billing-data/index.html +++ b/modules/client/front/billing-data/index.html @@ -108,53 +108,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index 2dda347b9..dd43a661e 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -42,12 +42,11 @@ export default class Controller extends Section { this.newBankEntity = { countryFk: Number.parseInt(this.client.countryFk) }; - this.$.bankEntityDialog.show(); + this.$.bankEntity.open(); } - onBankEntityAccept() { - return this.$http.post(`BankEntities`, this.newBankEntity) - .then(res => this.client.bankEntityFk = res.data.id); + onResponse(response) { + this.client.bankEntityFk = response.id; } get ibanCountry() { diff --git a/modules/client/front/billing-data/index.spec.js b/modules/client/front/billing-data/index.spec.js index 95700cb5a..60cc4025c 100644 --- a/modules/client/front/billing-data/index.spec.js +++ b/modules/client/front/billing-data/index.spec.js @@ -35,20 +35,12 @@ describe('Client', () => { }); }); - describe('onBankEntityAccept()', () => { - it('should request to create a new bank entity', () => { - let newBankEntity = { - name: 'My new bank entity', - bic: 'ES123', - countryFk: 1, - id: 999 - }; - controller.newBankEntity = newBankEntity; - $httpBackend.expectPOST('BankEntities', newBankEntity).respond({id: 999}); - controller.onBankEntityAccept(); - $httpBackend.flush(); + describe('onResponse()', () => { + it('should assign the response id to the client bankEntityFk', () => { + const expectedResponse = {id: 999}; + controller.onResponse(expectedResponse); - expect(controller.client.bankEntityFk).toEqual(newBankEntity.id); + expect(controller.client.bankEntityFk).toEqual(expectedResponse.id); }); }); diff --git a/modules/client/front/billing-data/locale/es.yml b/modules/client/front/billing-data/locale/es.yml index a7ecbbdae..0052ee403 100644 --- a/modules/client/front/billing-data/locale/es.yml +++ b/modules/client/front/billing-data/locale/es.yml @@ -14,5 +14,4 @@ Received core VNL: Recibido core VNL Received B2B VNL: Recibido B2B VNL Save: Guardar New bank entity: Nueva entidad bancaria -Name can't be empty: El nombre no puede quedar vacío -Entity Code: Código \ No newline at end of file +Name can't be empty: El nombre no puede quedar vacío \ No newline at end of file diff --git a/modules/supplier/front/account/index.html b/modules/supplier/front/account/index.html index 7264f6f2c..c8ec8ba31 100644 --- a/modules/supplier/front/account/index.html +++ b/modules/supplier/front/account/index.html @@ -65,6 +65,7 @@ + { expect(controller.$.bankEntity.open).toHaveBeenCalledWith(); }); - it('should request to create a new bank entity', () => { + it('should now request to create a new bank entity', () => { controller.bankEntity = { name: 'My new bank entity', bic: 'ES1234', From e81c1046f6999918cbc201c98a688229e39ef8ed Mon Sep 17 00:00:00 2001 From: carlosjr Date: Wed, 15 Sep 2021 13:26:08 +0200 Subject: [PATCH 3/5] test(e2e): e2e and selectors amended according to newbankentity refactor --- e2e/helpers/selectors.js | 7 ++++--- e2e/paths/02-client/04_edit_billing_data.spec.js | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 6f257774a..f63d67f8b 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -186,9 +186,10 @@ export default { receivedB2BVNLCheckbox: 'vn-client-billing-data vn-check[label="Received B2B VNL"]', swiftBic: 'vn-client-billing-data vn-autocomplete[ng-model="$ctrl.client.bankEntityFk"]', newBankEntityButton: 'vn-client-billing-data vn-icon-button[vn-tooltip="New bank entity"] > button', - newBankEntityName: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newBankEntity.name"]', - newBankEntityBIC: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newBankEntity.bic"]', - newBankEntityCode: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newBankEntity.id"]', + newBankEntityName: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.data.name"]', + newBankEntityBIC: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.data.bic"]', + newBankEntityCountry: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.data.countryFk"]', + newBankEntityCode: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.data.id"]', acceptBankEntityButton: '.vn-dialog.shown button[response="accept"]', saveButton: 'vn-client-billing-data button[type=submit]', watcher: 'vn-client-billing-data vn-watcher' diff --git a/e2e/paths/02-client/04_edit_billing_data.spec.js b/e2e/paths/02-client/04_edit_billing_data.spec.js index 208345457..6bc48093e 100644 --- a/e2e/paths/02-client/04_edit_billing_data.spec.js +++ b/e2e/paths/02-client/04_edit_billing_data.spec.js @@ -34,8 +34,9 @@ describe('Client Edit billing data path', () => { it(`should create a new BIC code`, async() => { await page.waitToClick(selectors.clientBillingData.newBankEntityButton); await page.write(selectors.clientBillingData.newBankEntityName, 'Gotham City Bank'); - await page.write(selectors.clientBillingData.newBankEntityCode, '9999'); await page.write(selectors.clientBillingData.newBankEntityBIC, 'GTHMCT'); + await page.autocompleteSearch(selectors.clientBillingData.newBankEntityCountry, 'España'); + await page.write(selectors.clientBillingData.newBankEntityCode, '9999'); await page.waitToClick(selectors.clientBillingData.acceptBankEntityButton); await page.waitForTextInField(selectors.clientBillingData.swiftBic, 'Gotham City Bank'); const newcode = await page.waitToGetProperty(selectors.clientBillingData.swiftBic, 'value'); From 47e70f7c3c86c73c803b4837159aeda0f0993e7f Mon Sep 17 00:00:00 2001 From: carlosjr Date: Wed, 15 Sep 2021 15:54:54 +0200 Subject: [PATCH 4/5] refactor(newbankentity): the component now extends from Dialog --- front/salix/components/bank-entity/index.html | 95 +++++++++---------- front/salix/components/bank-entity/index.js | 34 +++---- 2 files changed, 57 insertions(+), 72 deletions(-) diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index b6cc1f4ee..211b77317 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -1,49 +1,46 @@ - - -

Please, ensure you put the correct data!

- - - - - - - - - - - - -
- - - - -
\ No newline at end of file + + New bank entity + + +

Please, ensure you put the correct data!

+ + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/front/salix/components/bank-entity/index.js b/front/salix/components/bank-entity/index.js index 192ebe046..154e39fc4 100644 --- a/front/salix/components/bank-entity/index.js +++ b/front/salix/components/bank-entity/index.js @@ -1,35 +1,23 @@ import ngModule from '../../module'; -import Component from 'core/lib/component'; +import Dialog from 'core/components/dialog'; import './style.scss'; -class Controller extends Component { - open() { - this.$.bankEntityDialog.show(); - } +class Controller extends Dialog { + responseHandler(response) { + if (response !== 'accept') + return super.responseHandler(response); - resetData() { - this.data = {}; - } + if (!this.data.countryFk) + throw new Error(`The country can't be empty`); - onAccept() { - try { - if (!this.data.countryFk) - throw new Error(`The country can't be empty`); - - this.$http.post(`bankEntities`, this.data).then(res => { - this.vnApp.showMessage(this.$t('The bank entity has been created. You can save the data now')); - this.emit('response', {$response: res.data}); - }); - } catch (e) { - this.vnApp.showError(this.$t(e.message)); - return false; - } - return true; + return this.$http.post(`bankEntities`, this.data) + .then(res => super.responseHandler(response)) + .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); } } ngModule.vnComponent('vnNewBankEntity', { - template: require('./index.html'), + slotTemplate: require('./index.html'), controller: Controller, bindings: { data: '<', From 34038b885c6f291b8cde321ffb0653e11769cc27 Mon Sep 17 00:00:00 2001 From: carlosjr Date: Wed, 15 Sep 2021 17:58:58 +0200 Subject: [PATCH 5/5] refactor(newBankEntity): client.billingData and supplier.account refactor to use newBankEntity Dialog --- front/salix/components/bank-entity/index.js | 2 +- .../components/bank-entity/index.spec.js | 45 ++++++----------- modules/client/front/billing-data/index.html | 4 +- modules/client/front/billing-data/index.js | 12 +---- .../client/front/billing-data/index.spec.js | 4 +- modules/supplier/front/account/index.html | 7 +-- modules/supplier/front/account/index.js | 21 ++------ modules/supplier/front/account/index.spec.js | 50 ++++--------------- 8 files changed, 39 insertions(+), 106 deletions(-) diff --git a/front/salix/components/bank-entity/index.js b/front/salix/components/bank-entity/index.js index 154e39fc4..d4ac8030a 100644 --- a/front/salix/components/bank-entity/index.js +++ b/front/salix/components/bank-entity/index.js @@ -11,7 +11,7 @@ class Controller extends Dialog { throw new Error(`The country can't be empty`); return this.$http.post(`bankEntities`, this.data) - .then(res => super.responseHandler(response)) + .then(() => super.responseHandler(response)) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); } } diff --git a/front/salix/components/bank-entity/index.spec.js b/front/salix/components/bank-entity/index.spec.js index c288c3052..3c3de4c40 100644 --- a/front/salix/components/bank-entity/index.spec.js +++ b/front/salix/components/bank-entity/index.spec.js @@ -5,49 +5,34 @@ describe('Salix Component vnNewBankEntity', () => { let $httpBackend; let $scope; let $element; - let vnApp; beforeEach(ngModule('salix')); - beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _vnApp_) => { + beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { $httpBackend = _$httpBackend_; - vnApp = _vnApp_; - jest.spyOn(vnApp, 'showError'); $scope = $rootScope.$new(); - $element = angular.element(''); - controller = $componentController('vnNewBankEntity', {$element, $scope}); + $element = angular.element(''); + const $transclude = { + $$boundTransclude: { + $$slots: [] + } + }; + controller = $componentController('vnNewBankEntity', {$element, $scope, $transclude}); + controller.vnApp = {showSuccess: jest.fn()}; })); - describe('resetData()', () => { - it('should reset the location in the controller', () => { - expect(controller.data).toBeUndefined(); - - controller.resetData(); - - expect(controller.data).toEqual({}); - }); - }); - - describe('onAccept()', () => { - it('should throw an error if there is no country id in the location', () => { - jest.spyOn(controller.vnApp, 'showMessage'); - - controller.data = {}; - - controller.onAccept(); - - expect(controller.vnApp.showError).toHaveBeenCalledWith(`The country can't be empty`); - }); - - it('should do add the new bank entity', () => { + describe('responseHandler()', () => { + it('should show a success message after the query to bankEntities', () => { controller.data = { countryFk: 1 }; - $httpBackend.expectPOST('bankEntities', controller.data).respond(200, controller.data); + $httpBackend.expectPOST('bankEntities', controller.data).respond(200); - controller.onAccept(); + controller.responseHandler('accept'); $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); }); }); }); diff --git a/modules/client/front/billing-data/index.html b/modules/client/front/billing-data/index.html index ae1ad85a5..ff2e2f157 100644 --- a/modules/client/front/billing-data/index.html +++ b/modules/client/front/billing-data/index.html @@ -66,7 +66,7 @@ @@ -111,5 +111,5 @@ + on-accept="$ctrl.onAccept($data)"> \ No newline at end of file diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index dd43a661e..7056fa566 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -37,16 +37,8 @@ export default class Controller extends Section { return payMethod || iban || dueDay; } - onAddEntityClick(event) { - event.preventDefault(); - this.newBankEntity = { - countryFk: Number.parseInt(this.client.countryFk) - }; - this.$.bankEntity.open(); - } - - onResponse(response) { - this.client.bankEntityFk = response.id; + onAccept(data) { + this.client.bankEntityFk = data.id; } get ibanCountry() { diff --git a/modules/client/front/billing-data/index.spec.js b/modules/client/front/billing-data/index.spec.js index 60cc4025c..2e9e8ba97 100644 --- a/modules/client/front/billing-data/index.spec.js +++ b/modules/client/front/billing-data/index.spec.js @@ -35,10 +35,10 @@ describe('Client', () => { }); }); - describe('onResponse()', () => { + describe('onAccept()', () => { it('should assign the response id to the client bankEntityFk', () => { const expectedResponse = {id: 999}; - controller.onResponse(expectedResponse); + controller.onAccept(expectedResponse); expect(controller.client.bankEntityFk).toEqual(expectedResponse.id); }); diff --git a/modules/supplier/front/account/index.html b/modules/supplier/front/account/index.html index c8ec8ba31..cdaf79e8c 100644 --- a/modules/supplier/front/account/index.html +++ b/modules/supplier/front/account/index.html @@ -30,9 +30,10 @@
+ vn-click-stop="bankEntity.show({index: $index})" + vn-tooltip="New bank entity"> + on-accept="$ctrl.onAccept($data)"> \ No newline at end of file diff --git a/modules/supplier/front/account/index.js b/modules/supplier/front/account/index.js index 26f4af988..1e21b983e 100644 --- a/modules/supplier/front/account/index.js +++ b/modules/supplier/front/account/index.js @@ -18,23 +18,10 @@ class Controller extends Section { }); } - onResponse(response) { - const data = this.$.model.data; - const supplierAccount = data[this.currentRowIndex]; - supplierAccount.bankEntityFk = response.id; - } - - showBankEntity(event, $index) { - if (event.defaultPrevented) return; - event.preventDefault(); - this.currentRowIndex = $index; - this.$.bankEntity.open(); - } - - onBankEntityAccept() { - const query = `SupplierAccounts/${this.$params.id}/createBankEntity`; - return this.$http.patch(query, this.newBankEntity) - .then(res => this.supplierAccount.bankEntityFk = res.data.id); + onAccept(data) { + const accounts = this.supplierAccounts; + const targetAccount = accounts[data.index]; + targetAccount.bankEntityFk = data.id; } onSubmit() { diff --git a/modules/supplier/front/account/index.spec.js b/modules/supplier/front/account/index.spec.js index cb206429b..77d135f24 100644 --- a/modules/supplier/front/account/index.spec.js +++ b/modules/supplier/front/account/index.spec.js @@ -4,11 +4,9 @@ describe('Supplier Component vnSupplierAccount', () => { let $scope; let $element; let controller; - let $httpBackend; beforeEach(ngModule('supplier')); beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { - $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $scope.bankEntity = { open: () => {} @@ -21,50 +19,20 @@ describe('Supplier Component vnSupplierAccount', () => { }; })); - describe('showBankEntity()', () => { - it('should do nothing if it default is prevented', () => { - const event = { - defaultPrevented: true, - preventDefault: () => {} - }; - jest.spyOn(event, 'preventDefault'); - jest.spyOn(controller.$.bankEntity, 'open'); + describe('onAccept()', () => { + it('should set the created bank entity id into the target account', () => { + controller.supplierAccounts = [{}, {}, {}]; - controller.showBankEntity(event); - - expect(event.preventDefault).not.toHaveBeenCalledWith(); - expect(controller.$.bankEntity.open).not.toHaveBeenCalledWith(); - }); - - it('should call preventDefault() and open() when the default is not prevented', () => { - const event = { - defaultPrevented: false, - preventDefault: () => {} + const data = { + id: 999, + index: 1 }; - jest.spyOn(event, 'preventDefault'); - jest.spyOn(controller.$.bankEntity, 'open'); + controller.onAccept(data); - controller.showBankEntity(event); + const targetAccount = controller.supplierAccounts[data.index]; - expect(event.preventDefault).toHaveBeenCalledWith(); - expect(controller.$.bankEntity.open).toHaveBeenCalledWith(); - }); - - it('should now request to create a new bank entity', () => { - controller.bankEntity = { - name: 'My new bank entity', - bic: 'ES1234', - countryFk: 1, - id: 2200 - }; - - const query = `SupplierAccounts/${controller.$.bankEntity.id}/createBankEntity`; - $httpBackend.expectPATCH(query).respond({id: 2200}); - controller.onBankEntityAccept(); - $httpBackend.flush(); - - expect(controller.supplierAccount.bankEntityFk).toEqual(controller.bankEntity.id); + expect(targetAccount.bankEntityFk).toEqual(data.id); }); }); });