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 call getZoneClosing() with the expected ids', () => { jest.spyOn(controller.$.zoneEvents, 'show'); const event = new Event('click'); const target = document.createElement('div'); target.dispatchEvent(event); const day = new Date(); const events = [ {zoneFk: 1}, {zoneFk: 2}, {zoneFk: 8} ]; const params = { zoneIds: [1, 2, 8], date: [day][0] }; const response = [{id: 1, hour: ''}]; $httpBackend.when('POST', 'Zones/getZoneClosing', params).respond({response}); controller.onSelection(event, events, [day]); $httpBackend.flush(); expect(controller.$.zoneEvents.show).toHaveBeenCalledWith(target); expect(controller.zoneClosing.id).toEqual(response.id); }); }); });