import './index.js'; import popover from 'core/mocks/popover'; import crudModel from 'core/mocks/crud-model'; describe('Zone Component vnZoneDeliveryDays', () => { let $httpBackend; let controller; let $element; beforeEach(ngModule('zone')); beforeEach(inject(($componentController, _$httpBackend_) => { $httpBackend = _$httpBackend_; $element = angular.element(' { it('should set the deliveryMethodFk property as pickup and then perform a query that sets the filter', () => { $httpBackend.expect('GET', 'DeliveryMethods').respond([{id: 999}]); controller.deliveryMethodFk = 'pickUp'; $httpBackend.flush(); expect(controller.agencyFilter).toEqual({deliveryMethodFk: {inq: [999]}}); }); }); describe('setParams()', () => { it('should do nothing when no params are received', () => { controller.setParams(); expect(controller.deliveryMethodFk).toBeUndefined(); expect(controller.geoFk).toBeUndefined(); expect(controller.agencyModeFk).toBeUndefined(); }); it('should set the controller properties when the params are provided', () => { controller.$params = { deliveryMethodFk: 3, geoFk: 2, agencyModeFk: 1 }; controller.setParams(); expect(controller.deliveryMethodFk).toEqual(controller.$params.deliveryMethodFk); expect(controller.geoFk).toEqual(controller.$params.geoFk); expect(controller.agencyModeFk).toEqual(controller.$params.agencyModeFk); }); }); describe('fetchData()', () => { it('should make an HTTP GET query and then call the showMessage() method', () => { jest.spyOn(controller.vnApp, 'showMessage'); jest.spyOn(controller.$state, 'go'); controller.agencyModeFk = 1; controller.deliveryMethodFk = 2; controller.geoFk = 3; controller.$state.current.name = 'myState'; const expectedData = {events: []}; const url = 'Zones/getEvents?agencyModeFk=1&deliveryMethodFk=2&geoFk=3'; $httpBackend.when('GET', 'DeliveryMethods').respond([]); $httpBackend.expect('GET', url).respond({events: []}); controller.fetchData(); $httpBackend.flush(); expect(controller.$.data).toEqual(expectedData); expect(controller.vnApp.showMessage).toHaveBeenCalledWith('No service for the specified zone'); expect(controller.$state.go).toHaveBeenCalledWith( controller.$state.current.name, { agencyModeFk: 1, deliveryMethodFk: 2, geoFk: 3 } ); }); }); describe('onSelection()', () => { it('should not call the show popover method if events array is empty', () => { jest.spyOn(controller.$.zoneEvents, 'show'); const event = new Event('click'); const target = document.createElement('div'); target.dispatchEvent(event); const events = []; controller.onSelection(event, events); expect(controller.$.zoneEvents.show).not.toHaveBeenCalled(); }); it('should call the show() method and then call the applyFilter() method with the expected ids', () => { const zoneModel = controller.$.zoneModel; jest.spyOn(controller.$.zoneEvents, 'show'); jest.spyOn(zoneModel, 'applyFilter'); const event = new Event('click'); const target = document.createElement('div'); target.dispatchEvent(event); const events = [ {zoneFk: 1}, {zoneFk: 2}, {zoneFk: 8} ]; controller.onSelection(event, events); const expectedFilter = { include: { relation: 'agencyMode', scope: {fields: ['name']} }, where: { id: {inq: [1, 2, 8]} } }; expect(controller.$.zoneEvents.show).toHaveBeenCalledWith(target); expect(zoneModel.applyFilter).toHaveBeenCalledWith(expectedFilter); }); }); });