describe('resource provider factory config', function () {
    'use strict';

    it('should allow disabling root wrapping globally', function () {
        module('rails', function (RailsResourceProvider) {
            expect(RailsResourceProvider.rootWrapping(false)).toBe(RailsResourceProvider);
        });

        inject(function (railsResourceFactory) {
            expect(railsResourceFactory({name: 'test', url: '/test'}).config.rootWrapping).toBe(false);
        });
    });

    it('should allow setting updateMethod globally', function () {
        module('rails', function (RailsResourceProvider) {
            expect(RailsResourceProvider.updateMethod('patch')).toBe(RailsResourceProvider);
        });

        inject(function (railsResourceFactory) {
            expect(railsResourceFactory({name: 'test', url: '/test'}).config.updateMethod).toBe('patch');
        });
    });

    it('should allow setting http headers options globally', function () {
        module('rails', function (RailsResourceProvider) {
            expect(RailsResourceProvider.httpConfig({headers: {'test': "header"}})).toBe(RailsResourceProvider);
        });

        inject(function (railsResourceFactory) {
            expect(railsResourceFactory({name: 'test', url: '/test'}).config.httpConfig.headers).toEqualData({'Accept': 'application/json', 'Content-Type': 'application/json', 'test': 'header'});
        });
    });

    it('should allow setting default query parameters options globally', function () {
        module('rails', function (RailsResourceProvider) {
            expect(RailsResourceProvider.defaultParams({'test': "1"})).toBe(RailsResourceProvider);
        });

        inject(function (railsResourceFactory) {
            expect(railsResourceFactory({name: 'test', url: '/test'}).config.defaultParams).toEqualData({'test': '1'});
        });
    });

    it('should allow setting default extensions globally', function () {
        module('rails', function (RailsResourceProvider) {
            expect(RailsResourceProvider.extensions('snapshots')).toBe(RailsResourceProvider);
        });

        inject(function (railsResourceFactory) {
            expect(railsResourceFactory({name: 'test', url: '/test'}).prototype.snapshot).toBeDefined();
        });
    });

    it('should allow setting default extensions using an array', function () {
        module('rails', function (RailsResourceProvider) {
            expect(RailsResourceProvider.extensions(['snapshots'])).toBe(RailsResourceProvider);
        });

        inject(function (railsResourceFactory) {
            expect(railsResourceFactory({name: 'test', url: '/test'}).prototype.snapshot).toBeDefined();
        });
    });
});