import './index.js'; describe('Item', () => { describe('Component vnItemRequest', () => { let $scope; let controller; let $httpBackend; beforeEach(ngModule('item')); beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); controller = $componentController('vnItemRequest', {$element: null, $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('Pending'); isOk = 1; result = controller.getState(isOk); expect(result).toEqual('Accepted'); isOk = 0; result = controller.getState(isOk); expect(result).toEqual('Denied'); }); }); 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.toHaveBeenCalled(); }); it('should perform a query and call vnApp.showSuccess() and refresh if the conditions are met', () => { jest.spyOn(controller.vnApp, 'showSuccess'); const expectedResult = {concept: 'Melee Weapon'}; let request = {itemFk: 1, saleQuantity: 1, id: 1}; $httpBackend.expectPOST(`TicketRequests/${request.id}/confirm`).respond(expectedResult); controller.confirmRequest(request); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalled(); }); }); 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.expectPATCH(`Sales/${request.saleFk}`).respond(); controller.changeQuantity(request); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalled(); }); }); 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('onDenyAccept()', () => { it(`should deny the request`, () => { const request = { id: 1, response: 'new' }; $httpBackend.expectPOST(`TicketRequests/${request.id}/deny`) .respond({response: 'denied'}); controller.onDenyAccept(request); $httpBackend.flush(); expect(request.response).toBe('denied'); }); }); }); });