import './index';
import crudModel from 'core/mocks/crud-model';

describe('component vnZoneLocation', () => {
    let $scope;
    let controller;
    let $httpBackend;

    beforeEach(ngModule('zone'));

    beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
        $httpBackend = _$httpBackend_;
        $scope = $rootScope.$new();
        const $element = angular.element(`<vn-zone-location></vn-zone-location>`);
        controller = $componentController('vnZoneLocation', {$element, $scope});
        controller.$.model = crudModel;
        controller.zone = {id: 1};
    }));

    describe('onSearch()', () => {
        it('should call the applyFilter() method and then set the data', () => {
            controller.$.treeview = {};
            controller.onSearch({});

            const treeviewData = controller.$.treeview.data;

            expect(treeviewData).toBeDefined();
            expect(treeviewData.length).toEqual(3);
        });
    });

    describe('onFetch()', () => {
        it('should call the applyFilter() method and then return the model data', () => {
            const result = controller.onFetch();

            expect(result.length).toEqual(3);
        });
    });

    describe('onSelection()', () => {
        it('should make an HTTP POST query', () => {
            const item = {id: 123};

            const expectedParams = {geoId: 123, isIncluded: true};
            $httpBackend.expect('POST', `zones/1/toggleIsIncluded`, expectedParams).respond(200);
            controller.onSelection(true, item);
            $httpBackend.flush();
        });
    });
});