import './card.js'; describe('Order', () => { describe('Component vnOrderCreateCard', () => { let controller; let $httpBackend; let $scope; beforeEach(ngModule('order')); beforeEach(inject(($componentController, _$httpBackend_, _vnApp_, $rootScope) => { $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); const $element = angular.element('<vn-order-create-card></vn-order-create-card>'); controller = $componentController('vnOrderCreateCard', {$element, $scope}); controller.item = {id: 3}; })); describe('set order', () => { it(`should set order if the value given is not null`, () => { controller.order = 1; expect(controller.order).toEqual(1); }); }); describe('set clientFk', () => { it(`should set addressFk to null and clientFk to a value and set addressFk to a value given`, () => { let filter = { include: { relation: 'defaultAddress', scope: { fields: 'id' } }, where: {id: 2} }; filter = encodeURIComponent(JSON.stringify(filter)); let response = [ { defaultAddress: {id: 1} } ]; $httpBackend.whenGET(`Clients?filter=${filter}`).respond(response); $httpBackend.expectGET(`Clients?filter=${filter}`); controller.clientFk = 2; $httpBackend.flush(); expect(controller.clientFk).toEqual(2); expect(controller.order.addressFk).toBe(1); }); }); describe('set addressFk', () => { it(`should set agencyModeFk property to null and addressFk to a value`, () => { controller.addressFk = 101; expect(controller.addressFk).toEqual(101); expect(controller.order.agencyModeFk).toBe(null); }); }); describe('getAvailableAgencies()', () => { it(`should make a query if landed and addressFk exists`, () => { controller.order.addressFk = 101; controller.order.landed = 101; $httpBackend.whenRoute('GET', 'Agencies/landsThatDay') .respond({data: 1}); controller.getAvailableAgencies(); $httpBackend.flush(); }); }); describe('onSubmit()', () => { it(`should call createOrder()`, () => { jest.spyOn(controller, 'createOrder'); controller.onSubmit(); expect(controller.createOrder).toHaveBeenCalledWith(); }); }); describe('createOrder()', () => { it(`should make a query, call vnApp.showSuccess and $state.go if the response is defined`, () => { controller.order.landed = 101; controller.order.addressFk = 101; controller.order.agencyModeFk = 101; jest.spyOn(controller.vnApp, 'showSuccess'); jest.spyOn(controller.$state, 'go'); $httpBackend.expect('POST', 'Orders/new', {landed: 101, addressId: 101, agencyModeId: 101}).respond(200, 1); controller.createOrder(); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalled(); expect(controller.$state.go).toHaveBeenCalledWith('order.card.catalog', {id: 1}); }); }); }); });