import './index';

describe('Order', () => {
    describe('Component vnOrderVolume', () => {
        let controller;
        let $httpBackend;
        let $state;
        let $scope;

        beforeEach(ngModule('order'));

        beforeEach(angular.mock.inject(($componentController, _$state_, _$httpBackend_, $rootScope) => {
            $httpBackend = _$httpBackend_;
            $scope = $rootScope.$new();
            $scope.model = {data: [{itemFk: 1}, {itemFk: 2}], accept: () => {
                return {
                    then: () => {}
                };
            }};
            $scope.descriptor = {show: () => {}};
            $scope.popover = {relocate: () => {}};
            $state = _$state_;
            $state.params.id = 1;
            controller = $componentController('vnOrderVolume', {$scope}, {$httpBackend}, {$state});
        }));

        it('should join the sale volumes to its respective sale', () => {
            let response = {volumes: [{itemFk: 1, volume: 0.008}, {itemFk: 2, volume: 0.003}]};
            $httpBackend.whenGET(`/order/api/Orders/1/getVolumes`).respond(response);
            $httpBackend.expectGET(`/order/api/Orders/1/getVolumes`);
            controller.onDataChange();
            $httpBackend.flush();

            expect(controller.$scope.model.data[0].volume).toBe(0.008);
            expect(controller.$scope.model.data[1].volume).toBe(0.003);
        });
        describe('showDescriptor()', () => {
            it('should set $scope.descriptor.itemFk, $scope.descriptor.parent and call $scope.descriptor.show()', () => {
                let event = {target: 1};
                let itemFk = 1;
                spyOn(controller.$scope.descriptor, 'show');
                controller.showDescriptor(event, itemFk);

                expect(controller.$scope.descriptor.itemFk).toBe(1);
                expect(controller.$scope.descriptor.parent).toBe(1);
                expect(controller.$scope.descriptor.show).toHaveBeenCalledWith();
            });
        });

        describe('onDescriptorLoad()', () => {
            it('should call $scope.popover.relocate()', () => {
                spyOn(controller.$scope.popover, 'relocate');
                controller.onDescriptorLoad();

                expect(controller.$scope.popover.relocate).toHaveBeenCalledWith();
            });
        });
    });
});