import './index.js'; import crudModel from 'core/mocks/crud-model'; describe('Item', () => { describe('Component vnItemRequest', () => { let $scope; let $element; let controller; let $httpBackend; beforeEach(ngModule('item')); beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_) => { $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $scope.model = crudModel; $scope.denyReason = {hide: () => {}}; $element = angular.element(''); controller = $componentController('vnItemRequest', {$element, $scope}); })); afterAll(() => { $scope.$destroy(); $element.remove(); }); describe('getState()', () => { it(`should return an string depending to the isOK value`, () => { let isOk = null; let result = controller.getState(isOk); expect(result).toEqual('Nueva'); isOk = 1; result = controller.getState(isOk); expect(result).toEqual('Aceptada'); isOk = 0; result = controller.getState(isOk); expect(result).toEqual('Denegada'); }); }); describe('confirmRequest()', () => { it(`should do nothing if the request does't have itemFk or saleQuantity`, () => { let request = {}; jest.spyOn(controller.vnApp, 'showSuccess'); controller.confirmRequest(request); expect(controller.vnApp.showSuccess).not.toHaveBeenCalledWith(); }); it('should perform a query and call vnApp.showSuccess() and refresh if the conditions are met', () => { jest.spyOn(controller.vnApp, 'showSuccess'); let model = controller.$.model; jest.spyOn(model, 'refresh'); const expectedResult = {concept: 'Melee Weapon'}; let request = {itemFk: 1, saleQuantity: 1, id: 1}; $httpBackend.when('POST', `TicketRequests/${request.id}/confirm`).respond(expectedResult); $httpBackend.expect('POST', `TicketRequests/${request.id}/confirm`).respond(expectedResult); controller.confirmRequest(request); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); }); }); describe('changeQuantity()', () => { it(`should call confirmRequest() if there's no sale id in the request`, () => { let request = {}; jest.spyOn(controller, 'confirmRequest'); controller.changeQuantity(request); expect(controller.confirmRequest).toHaveBeenCalledWith(jasmine.any(Object)); }); it(`should perform a query and call vnApp.showSuccess() if the conditions are met`, () => { let request = {saleFk: 1, saleQuantity: 1}; jest.spyOn(controller.vnApp, 'showSuccess'); $httpBackend.when('PATCH', `Sales/${request.saleFk}/`).respond(); $httpBackend.expect('PATCH', `Sales/${request.saleFk}/`).respond(); controller.changeQuantity(request); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); }); }); describe('compareDate()', () => { it(`should return "success" if receives a future date`, () => { let date = '3019-02-18T11:00:00.000Z'; let result = controller.compareDate(date); expect(result).toEqual('success'); }); it(`should return "warning" if date is today`, () => { let date = new Date(); let result = controller.compareDate(date); expect(result).toEqual('warning'); }); }); describe('denyRequest()', () => { it(`should perform a query and call vnApp.showSuccess(), refresh(), hide() and set denyObservation to null in the controller`, () => { jest.spyOn(controller.vnApp, 'showSuccess'); const request = {id: 1}; const expectedResult = {isOk: false, attenderFk: 106, response: 'Denied!'}; controller.selectedRequest = request; $httpBackend.when('POST', `TicketRequests/${request.id}/deny`).respond(expectedResult); $httpBackend.expect('POST', `TicketRequests/${request.id}/deny`).respond(expectedResult); controller.denyRequest('accept'); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); }); }); }); });