import '../editDiscount.js'; describe('Ticket', () => { describe('Component vnTicketSaleEditDiscount', () => { let controller; let $httpBackend; let $state; let $scope; beforeEach(ngModule('ticket')); beforeEach(angular.mock.inject(($componentController, _$state_, _$httpBackend_, $rootScope) => { $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $scope.index = {model: {instances: [{id: 1}, {id: 2}]}, accept: () => { return { then: () => {} }; }}; $state = _$state_; $state.params.id = 11; controller = $componentController('vnTicketSaleEditDiscount', {$scope, $state}); controller._edit = [{id: 3}]; controller.onHide = () => {}; })); describe('edit() setter', () => { it('should set _edit value and call setNewDiscount', () => { jest.spyOn(controller, 'setNewDiscount'); controller.edit = {id: 1}; expect(controller.edit).toEqual({id: 1}); expect(controller.setNewDiscount).toHaveBeenCalledWith(); }); }); describe('bulk() setter', () => { it('should set _bulk value and call setNewDiscount', () => { jest.spyOn(controller, 'setNewDiscount'); controller.bulk = true; expect(controller.bulk).toEqual(true); expect(controller.setNewDiscount).toHaveBeenCalledWith(); }); }); describe('setNewDiscount()', () => { it('should set NewDiscount to edit[0].discount value if it doesnt exists', () => { controller.edit = [{discount: 1}]; controller.setNewDiscount(); expect(controller.newDiscount).toEqual(1); }); }); describe('updateDiscount()', () => { it('should make a query if the discount value has been modified or the bulk value is true', () => { controller.bulk = true; controller.newDiscount = 15; $httpBackend.expectPOST(`Tickets/11/updateDiscount`).respond(); controller.updateDiscount(); $httpBackend.flush(); }); it(`should throw if there's no changes on discount and it isn't bulk`, () => { controller.bulk = false; controller.newDiscount = 15; controller.edit = [{discount: 15}]; jest.spyOn(controller.vnApp, 'showError'); controller.updateDiscount(); expect(controller.vnApp.showError).toHaveBeenCalledWith('There are no changes to save'); }); }); describe('clearDiscount()', () => { it('should set newDiscount to null', () => { controller.clearDiscount(); expect(controller.newDiscount).toEqual(null); }); }); }); });