import './index.js';

describe('Supplier Component vnSupplierDescriptor', () => {
    let $httpBackend;
    let controller;
    let $httpParamSerializer;
    const supplier = {id: 1};

    beforeEach(ngModule('supplier'));

    beforeEach(inject(($componentController, _$httpBackend_, _$httpParamSerializer_) => {
        $httpBackend = _$httpBackend_;
        $httpParamSerializer = _$httpParamSerializer_;
        controller = $componentController('vnSupplierDescriptor', {$element: null}, {supplier});
    }));

    describe('loadData()', () => {
        it('should perform ask for the supplier', () => {
            const filter = {
                fields: [
                    'id',
                    'name',
                    'nickname',
                    'nif',
                    'payMethodFk',
                    'payDemFk',
                    'payDay',
                    'isActive',
                    'isSerious',
                    'isTrucker',
                    'account'
                ],
                include: [
                    {
                        relation: 'payMethod',
                        scope: {
                            fields: ['id', 'name']
                        }
                    },
                    {
                        relation: 'payDem',
                        scope: {
                            fields: ['id', 'payDem']
                        }
                    },
                    {
                        relation: 'client',
                        scope: {
                            fields: ['id', 'fi']
                        }
                    }
                ]
            };
            const serializedParams = $httpParamSerializer({filter});
            let query = `Suppliers/${controller.supplier.id}?${serializedParams}`;
            jest.spyOn(controller, 'getData');

            $httpBackend.expect('GET', query).respond({id: 1});
            controller.loadData();
            $httpBackend.flush();

            expect(controller.getData).toHaveBeenCalledTimes(1);
        });
    });
});