import './index.js'; describe('ticket Component vnTicketDescriptorPopover', () => { let $httpBackend; let $scope; let controller; let $element; let $timeout; beforeEach(angular.mock.module('ticket', $translateProvider => { $translateProvider.translations('en', {}); })); beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _$timeout_) => { $httpBackend = _$httpBackend_; $timeout = _$timeout_; $element = angular.element(`
`); $scope = $rootScope.$new(); $scope.popover = {relocate: () => {}, show: () => {}}; controller = $componentController('vnTicketDescriptorPopover', {$scope, $element}); })); describe('ticketFk()', () => { it(`should not apply any changes if the received id is the same stored in _ticketFk`, () => { controller.ticket = 'I exist!'; controller._ticketFk = 1; spyOn(controller, 'getCard'); controller.ticketFk = 1; expect(controller.ticket).toEqual('I exist!'); expect(controller._ticketFk).toEqual(1); expect(controller.getCard).not.toHaveBeenCalled(); }); it(`should set the received id into _ticketFk, set the ticket to null and then call getCard()`, () => { controller.ticket = `Please don't`; controller._ticketFk = 1; spyOn(controller, 'getCard'); controller.ticketFk = 999; expect(controller.ticket).toBeNull(); expect(controller._ticketFk).toEqual(999); expect(controller.getCard).toHaveBeenCalledWith(); }); }); describe('ticket()', () => { it(`should save the ticket into _ticket and then call relocate()`, () => { spyOn(controller.$.popover, 'relocate'); controller.ticket = `i'm the ticket!`; $timeout.flush(); expect(controller._ticket).toEqual(`i'm the ticket!`); expect(controller.$.popover.relocate).toHaveBeenCalledWith(); }); }); describe('show()', () => { it(`should call the show()`, () => { spyOn(controller.$.popover, 'show'); controller.show(); expect(controller.$.popover.show).toHaveBeenCalledWith(); }); }); describe('getCard()', () => { it(`should perform a get query to store the ticket data into the controller`, () => { controller.ticketFk = 1; controller.canceler = null; let response = {}; let filter = { include: [ { relation: 'warehouse', scope: { fields: ['name'] } }, { relation: 'agencyMode', scope: { fields: ['name'] } }, { relation: 'client', scope: { fields: ['salesPersonFk', 'name', 'isActive', 'isFreezed', 'isTaxDataChecked'], include: { relation: 'salesPerson', scope: { fields: ['userFk'], include: { relation: 'user', scope: { fields: ['nickname'] } } } } } }, { relation: 'state', scope: { fields: ['stateFk'], include: { relation: 'state', fields: ['id', 'name'], } } } ] }; let json = encodeURIComponent(JSON.stringify(filter)); $httpBackend.when('GET', `/ticket/api/Tickets/${controller._ticketFk}?filter=${json}`).respond(response); $httpBackend.expect('GET', `/ticket/api/Tickets/${controller._ticketFk}?filter=${json}`); controller.getCard(); $httpBackend.flush(); expect(controller.ticket).toEqual(response); }); }); });