import './index.js'; import {toJsonDate} from 'core/lib/date'; describe('Ticket', () => { describe('Component vnTicketDataStepOne', () => { let $state; let controller; let $httpBackend; beforeEach(ngModule('ticket')); beforeEach(angular.mock.inject(($componentController, _$state_, _$httpBackend_) => { $state = _$state_; $httpBackend = _$httpBackend_; controller = $componentController('vnTicketDataStepOne', {$state}); })); describe('ticket() setter', () => { it('should set ticket property and call onChangeAddress() method', () => { spyOn(controller, 'onChangeAddress'); controller.ticket = {id: 1, clientFk: 101}; expect(controller.onChangeAddress).toHaveBeenCalledWith(101); }); }); describe('clientFk() setter', () => { it('should set clientFk property and call onChangeAddress() method ', () => { spyOn(controller, 'onChangeAddress'); controller.ticket = {id: 1, clientFk: 101}; controller.clientFk = 102; expect(controller.onChangeAddress).toHaveBeenCalledWith(102); }); }); describe('shipped() setter', () => { it('should set shipped property and call onChangeShipped() method ', () => { let shipped = new Date(); spyOn(controller, 'onChangeShipped'); controller.ticket = {id: 1}; controller.shipped = shipped; expect(controller.onChangeShipped).toHaveBeenCalledWith(shipped); }); }); describe('landed() setter', () => { it('should set landed property and call onChangeLanded() method ', () => { let landed = new Date(); spyOn(controller, 'onChangeLanded'); controller.ticket = {id: 1}; controller.landed = landed; expect(controller.onChangeLanded).toHaveBeenCalledWith(landed); }); }); describe('onChangeShipped()', () => { it('should return an available landing date', async() => { let shipped = new Date(); controller._ticket = { id: 1, shipped: shipped, addressFk: 121, agencyModeFk: 2, warehouseFk: 1 }; let data = { shipped: toJsonDate(shipped), addressFk: 121, agencyModeFk: 2, warehouseFk: 1 }; $httpBackend.whenPOST(`/api/Tickets/getLanded`, data).respond(200); $httpBackend.expectPOST(`/api/Tickets/getLanded`, data); controller.onChangeShipped(shipped); $httpBackend.flush(); }); }); describe('onChangeLanded()', () => { it('should return an available shipment date', async() => { let landed = new Date(); controller._ticket = {id: 1, landed: landed, addressFk: 121, agencyModeFk: 2}; let data = {landed: landed, addressFk: 121, agencyModeFk: 2}; $httpBackend.whenPOST(`/api/Tickets/getShipped`, data).respond(200); $httpBackend.expectPOST(`/api/Tickets/getShipped`, data); controller.onChangeLanded(landed); $httpBackend.flush(); }); }); describe('isFormInvalid()', () => { it('should check if all form fields are valid', () => { controller.ticket = { clientFk: 1, addressFk: 121, agencyModeFk: 1, companyFk: 442, warehouseFk: 1, shipped: new Date(), landed: new Date() }; expect(controller.isFormInvalid()).toBeFalsy(); }); }); describe('onStepChange()', () => { it('should call onStepChange method and return a NO_AGENCY_AVAILABLE signal error', async() => { let landed = new Date(); landed.setHours(0, 0, 0, 0); controller._ticket = { id: 1, clientFk: 1, addressFk: 121, agencyModeFk: 1, companyFk: 442, warehouseFk: 1, shipped: new Date(), landed: landed }; let response = {error: new Error('NO_AGENCY_AVAILABLE')}; $httpBackend.whenPOST(`/ticket/api/sales/1/priceDifference`).respond(400, response); $httpBackend.expectPOST(`/ticket/api/sales/1/priceDifference`); controller.onStepChange(); $httpBackend.flush(); }); }); }); });