public void SetMobileAppControllerConfigProvider_Roundtrips()
        {
            // Arrange
            TableControllerConfigProvider provider = new TableControllerConfigProvider();
            HttpConfiguration config = new HttpConfiguration();

            // Act
            config.SetTableControllerConfigProvider(provider);
            ITableControllerConfigProvider actual = config.GetTableControllerConfigProvider();

            // Assert
            Assert.Same(provider, actual);
        }
        /// <summary>
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public static ITableControllerConfigProvider GetTableControllerConfigProvider(this HttpConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            ITableControllerConfigProvider tableConfigProvider;
            if (!config.Properties.TryGetValue(TableControllerConfigProviderKey, out tableConfigProvider))
            {
                tableConfigProvider = new TableControllerConfigProvider();
                config.Properties[TableControllerConfigProviderKey] = tableConfigProvider;
            }

            return tableConfigProvider;
        }
        /// <inheritdoc />
        public override void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
        {
            if (controllerDescriptor == null)
            {
                throw new ArgumentNullException("controllerDescriptor");
            }

            base.Initialize(controllerSettings, controllerDescriptor);

            ITableControllerConfigProvider configurationProvider = controllerDescriptor.Configuration.GetTableControllerConfigProvider();

            if (configurationProvider == null)
            {
                configurationProvider = new TableControllerConfigProvider();
            }

            configurationProvider.Configure(controllerSettings, controllerDescriptor);
        }
        public void TableConfigProvider_SettingsAreCorrect()
        {
            // Arrange
            var config = new HttpConfiguration();
            var configProvider = new TableControllerConfigProvider();
            var settings = new HttpControllerSettings(config);
            var descriptor = new HttpControllerDescriptor()
            {
                Configuration = config
            };

            // Act
            configProvider.Configure(settings, descriptor);

            // Assert
            // Verify SerializerSettings are set up as we expect
            Assert.Null(settings.Formatters.XmlFormatter);
            var filterProvider = config.Services.GetFilterProviders().OfType<TableFilterProvider>();
            Assert.NotNull(filterProvider);
            Assert.IsType<TableContractResolver>(settings.Formatters.JsonFormatter.SerializerSettings.ContractResolver);
        }