import './index.js'; import crudModel from 'core/mocks/crud-model'; describe('claim', () => { describe('Component vnClaimDetail', () => { let $scope; let controller; let $httpBackend; let $state; let aclService; beforeEach(angular.mock.module('claim', $translateProvider => { $translateProvider.translations('en', {}); })); beforeEach(angular.mock.inject(($componentController, _$state_, _$httpBackend_, $rootScope) => { $scope = $rootScope.$new(); $scope.descriptor = { show: () => {} }; $httpBackend = _$httpBackend_; $httpBackend.when('GET', 'claim/api/Claims/ClaimBeginnings').respond({}); $state = _$state_; aclService = {hasAny: () => true}; controller = $componentController('vnClaimDetail', {$state, aclService, $scope}); controller.salesToClaim = [{saleFk: 1}, {saleFk: 2}]; controller.salesClaimed = [{id: 1, sale: {}}]; controller.claim = {ticketFk: 1}; controller.$.model = crudModel; controller.$.addSales = { hide: () => {}, show: () => {} }; })); describe('openAddSalesDialog()', () => { it('should call getClaimableFromTicket and $.addSales.show', () => { controller.$ = {addSales: {show: () => {}}}; spyOn(controller, 'getClaimableFromTicket'); spyOn(controller.$.addSales, 'show'); controller.openAddSalesDialog(); expect(controller.getClaimableFromTicket).toHaveBeenCalledWith(); expect(controller.$.addSales.show).toHaveBeenCalledWith(); }); }); describe('getClaimableFromTicket()', () => { it('should make a query and set salesToClaim', () => { $httpBackend.expectGET(`/api/Sales/getClaimableFromTicket?ticketFk=1`).respond(200, 1); controller.getClaimableFromTicket(); $httpBackend.flush(); expect(controller.salesToClaim).toEqual(1); }); }); describe('addClaimedSale(index)', () => { it('should make a post and call refresh, hide and showSuccess', () => { spyOn(controller.$.addSales, 'hide'); spyOn(controller.$state, 'go'); $httpBackend.expectPOST(`claim/api/ClaimBeginnings/`).respond({}); controller.addClaimedSale(1); $httpBackend.flush(); expect(controller.$.addSales.hide).toHaveBeenCalledWith(); expect(controller.$state.go).toHaveBeenCalledWith('claim.card.development'); }); }); describe('deleteClaimedSale(index)', () => { it('should make a delete and call refresh and showSuccess', () => { spyOn(controller.$.model, 'remove'); $httpBackend.expectDELETE(`claim/api/ClaimBeginnings/1`).respond({}); controller.deleteClaimedSale(0); $httpBackend.flush(); expect(controller.$.model.remove).toHaveBeenCalledWith(0); }); }); describe('setClaimedQuantity(id, claimedQuantity)', () => { it('should make a patch and call refresh and showSuccess', () => { spyOn(controller.vnApp, 'showSuccess'); $httpBackend.expectPATCH(`claim/api/ClaimBeginnings/`).respond({}); controller.setClaimedQuantity(1, 1); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); }); }); describe('calculateTotals()', () => { it('should set paidTotal and claimedTotal to 0 if salesClaimed has no data', () => { controller.salesClaimed = []; controller.calculateTotals(); expect(controller.paidTotal).toEqual(0); expect(controller.claimedTotal).toEqual(0); }); }); describe('updateDiscount()', () => { it('should perform a query if the new discount differs from the claim discount', () => { controller.saleClaimed = {sale: { discount: 5, id: 7, ticketFk: 1, price: 2, quantity: 10}}; controller.newDiscount = 10; spyOn(controller.vnApp, 'showSuccess'); spyOn(controller, 'clearDiscount'); spyOn(controller.$.model, 'refresh'); $httpBackend.when('POST', '/api/Tickets/1/updateDiscount').respond({}); controller.updateDiscount(); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); expect(controller.clearDiscount).toHaveBeenCalledWith(); expect(controller.$.model.refresh).toHaveBeenCalledWith(); }); }); describe('showItemDescriptor()', () => { it('should configure the descriptor then show it', () => { const itemId = 500; const event = { stopImmediatePropagation: () => {}, target: 'the target element' }; spyOn(event, 'stopImmediatePropagation'); spyOn(controller.$.descriptor, 'show'); controller.showItemDescriptor(event, itemId); expect(event.stopImmediatePropagation).toHaveBeenCalledWith(); expect(controller.$.descriptor.itemFk).toEqual(itemId); expect(controller.$.descriptor.parent).toEqual(event.target); expect(controller.$.descriptor.show).toHaveBeenCalledWith(); }); }); }); });