diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js
index d7674cdd8..154546d73 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js
@@ -105,8 +105,6 @@ module.exports = Self => {
serialLetter,
args.invoiceDate
], myOptions);
- if (client.id == 1101 && args.addressId == 121)
- throw new Error('No se ha podido facturar');
const [newInvoice] = await Self.rawSql(`SELECT @invoiceId id`, null, myOptions);
if (newInvoice.id) {
diff --git a/modules/invoiceOut/front/global-invoicing/index.spec.js b/modules/invoiceOut/front/global-invoicing/index.spec.js
index 63c87fbea..2a505e6b6 100644
--- a/modules/invoiceOut/front/global-invoicing/index.spec.js
+++ b/modules/invoiceOut/front/global-invoicing/index.spec.js
@@ -1,126 +1,121 @@
-import './index.js';
-import popover from 'core/mocks/popover';
-import crudModel from 'core/mocks/crud-model';
+import './index';
-describe('Zone Component vnZoneDeliveryDays', () => {
- let $httpBackend;
- let controller;
- let $element;
+describe('InvoiceOut', () => {
+ describe('Component vnInvoiceOutGlobalInvoicing', () => {
+ let controller;
+ let $httpBackend;
+ let $httpParamSerializer;
- beforeEach(ngModule('zone'));
+ beforeEach(ngModule('invoiceOut'));
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $element = angular.element(' {
- it('should set the deliveryMethodFk property as pickup and then perform a query that sets the filter', () => {
- $httpBackend.expect('GET', 'DeliveryMethods').respond([{id: 999}]);
- controller.deliveryMethodFk = 'pickUp';
- $httpBackend.flush();
-
- expect(controller.agencyFilter).toEqual({deliveryMethodFk: {inq: [999]}});
- });
- });
-
- describe('setParams()', () => {
- it('should do nothing when no params are received', () => {
- controller.setParams();
-
- expect(controller.deliveryMethodFk).toBeUndefined();
- expect(controller.geoFk).toBeUndefined();
- expect(controller.agencyModeFk).toBeUndefined();
- });
-
- it('should set the controller properties when the params are provided', () => {
- controller.$params = {
- deliveryMethodFk: 3,
- geoFk: 2,
- agencyModeFk: 1
- };
- controller.setParams();
-
- expect(controller.deliveryMethodFk).toEqual(controller.$params.deliveryMethodFk);
- expect(controller.geoFk).toEqual(controller.$params.geoFk);
- expect(controller.agencyModeFk).toEqual(controller.$params.agencyModeFk);
- });
- });
-
- describe('fetchData()', () => {
- it('should make an HTTP GET query and then call the showMessage() method', () => {
- jest.spyOn(controller.vnApp, 'showMessage');
- jest.spyOn(controller.$state, 'go');
-
- controller.agencyModeFk = 1;
- controller.deliveryMethodFk = 2;
- controller.geoFk = 3;
- controller.$state.current.name = 'myState';
-
- const expectedData = {events: []};
-
- const url = 'Zones/getEvents?agencyModeFk=1&deliveryMethodFk=2&geoFk=3';
-
- $httpBackend.when('GET', 'DeliveryMethods').respond([]);
- $httpBackend.expect('GET', url).respond({events: []});
- controller.fetchData();
- $httpBackend.flush();
-
- expect(controller.$.data).toEqual(expectedData);
- expect(controller.vnApp.showMessage).toHaveBeenCalledWith('No service for the specified zone');
- expect(controller.$state.go).toHaveBeenCalledWith(
- controller.$state.current.name,
- {
- agencyModeFk: 1,
- deliveryMethodFk: 2,
- geoFk: 3
+ beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => {
+ $httpBackend = _$httpBackend_;
+ $httpParamSerializer = _$httpParamSerializer_;
+ let $scope = $rootScope.$new();
+ const $element = angular.element('');
+ const $transclude = {
+ $$boundTransclude: {
+ $$slots: []
}
- );
- });
- });
-
- describe('onSelection()', () => {
- it('should not call the show popover method if events array is empty', () => {
- jest.spyOn(controller.$.zoneEvents, 'show');
-
- const event = new Event('click');
- const target = document.createElement('div');
- target.dispatchEvent(event);
- const events = [];
- controller.onSelection(event, events);
-
- expect(controller.$.zoneEvents.show).not.toHaveBeenCalled();
- });
-
- it('should call the show() method and call getZoneClosing() with the expected ids', () => {
- jest.spyOn(controller.$.zoneEvents, 'show');
-
- const event = new Event('click');
- const target = document.createElement('div');
- target.dispatchEvent(event);
-
- const day = new Date();
- const events = [
- {zoneFk: 1},
- {zoneFk: 2},
- {zoneFk: 8}
- ];
- const params = {
- zoneIds: [1, 2, 8],
- date: [day][0]
};
- const response = [{id: 1, hour: ''}];
+ controller = $componentController('vnInvoiceOutGlobalInvoicing', {$element, $scope, $transclude});
+ controller.$.invoiceButton = {disabled: false};
+ }));
- $httpBackend.when('POST', 'Zones/getZoneClosing', params).respond({response});
- controller.onSelection(event, events, [day]);
- $httpBackend.flush();
+ describe('getMinClientId()', () => {
+ it('should set the invoice fromClientId property', () => {
+ const filter = {
+ order: 'id ASC',
+ limit: 1
+ };
- expect(controller.$.zoneEvents.show).toHaveBeenCalledWith(target);
- expect(controller.zoneClosing.id).toEqual(response.id);
+ const serializedParams = $httpParamSerializer({filter});
+ $httpBackend.expectGET(`Clients/findOne?${serializedParams}`).respond(200, {id: 1101});
+
+ controller.getMinClientId();
+ $httpBackend.flush();
+
+ expect(controller.invoice.fromClientId).toEqual(1101);
+ });
+ });
+
+ describe('getMaxClientId()', () => {
+ it('should set the invoice toClientId property', () => {
+ const filter = {
+ order: 'id DESC',
+ limit: 1
+ };
+
+ const serializedParams = $httpParamSerializer({filter});
+ $httpBackend.expectGET(`Clients/findOne?${serializedParams}`).respond(200, {id: 1112});
+
+ controller.getMaxClientId();
+ $httpBackend.flush();
+
+ expect(controller.invoice.toClientId).toEqual(1112);
+ });
+ });
+
+ describe('makeInvoice()', () => {
+ it('should throw an error when invoiceDate or maxShipped properties are not filled in', () => {
+ jest.spyOn(controller.vnApp, 'showError');
+
+ controller.invoice = {
+ fromClientId: 1101,
+ toClientId: 1101
+ };
+
+ controller.makeInvoice();
+
+ const expectedError = 'Invoice date and the max date should be filled';
+
+ expect(controller.vnApp.showError).toHaveBeenCalledWith(expectedError);
+ });
+
+ it('should throw an error when fromClientId or toClientId properties are not filled in', () => {
+ jest.spyOn(controller.vnApp, 'showError');
+
+ controller.invoice = {
+ invoiceDate: new Date(),
+ maxShipped: new Date()
+ };
+
+ controller.makeInvoice();
+
+ expect(controller.vnApp.showError).toHaveBeenCalledWith(`Choose a valid clients range`);
+ });
+
+ it('should make an http POST query and then call to the showSuccess() method', () => {
+ jest.spyOn(controller.vnApp, 'showSuccess');
+
+ const minShipped = new Date();
+ minShipped.setFullYear(minShipped.getFullYear() - 1);
+ minShipped.setMonth(1);
+ minShipped.setDate(1);
+ minShipped.setHours(0, 0, 0, 0);
+ controller.invoice = {
+ invoiceDate: new Date(),
+ maxShipped: new Date(),
+ fromClientId: 1101,
+ toClientId: 1101,
+ companyFk: 442,
+ minShipped: minShipped
+ };
+ const response = {
+ clientsAndAddresses: [{clientId: 1101, addressId: 121}],
+ invoice: controller.invoice
+ };
+
+ const address = {id: 121};
+
+ $httpBackend.expect('POST', `InvoiceOuts/clientsToInvoice`).respond(response);
+ $httpBackend.expect('GET', `Addresses/${response.clientsAndAddresses[0].addressId}`).respond(address);
+ $httpBackend.expect('POST', `InvoiceOuts/invoiceClient`).respond({id: 1});
+ controller.makeInvoice();
+ $httpBackend.flush();
+
+ expect(controller.vnApp.showSuccess).toHaveBeenCalled();
+ });
});
});
});