[Fixes #3904] Redesigned IValueProviderFactory and renamed a few methods

This commit is contained in:
Ajay Bhargav Baaskaran 2016-01-29 16:05:59 -08:00
parent acd88d08ba
commit 6de171f1ef
49 changed files with 301 additions and 240 deletions

View File

@ -11,12 +11,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
public interface IValueProviderFactory public interface IValueProviderFactory
{ {
/// <summary> /// <summary>
/// Gets a <see cref="IValueProvider"/> with values from the current request. /// Creates a <see cref="IValueProvider"/> with values from the current request
/// and adds it to <see cref="ValueProviderFactoryContext.ValueProviders"/> list.
/// </summary> /// </summary>
/// <param name="context">The <see cref="ActionContext"/>.</param> /// <param name="context">The <see cref="ValueProviderFactoryContext"/>.</param>
/// <returns> /// <returns>A <see cref="Task"/> that when completed will add an <see cref="IValueProvider"/> instance
/// A <see cref="Task"/> that when completed will yield a <see cref="IValueProvider"/> instance or <c>null</c>. /// to <see cref="ValueProviderFactoryContext.ValueProviders"/> list if applicable.</returns>
/// </returns> Task CreateValueProviderAsync(ValueProviderFactoryContext context);
Task<IValueProvider> GetValueProviderAsync(ActionContext context);
} }
} }

View File

@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
/// <summary> /// <summary>
/// Gets the list of <see cref="ClientValidatorItem"/> instances. <see cref="IClientModelValidatorProvider"/> /// Gets the list of <see cref="ClientValidatorItem"/> instances. <see cref="IClientModelValidatorProvider"/>
/// instances should add the appropriate <see cref="ClientValidatorItem.Validator"/> properties when /// instances should add the appropriate <see cref="ClientValidatorItem.Validator"/> properties when
/// <see cref="IClientModelValidatorProvider.GetValidators(ClientValidatorProviderContext)()"/> /// <see cref="IClientModelValidatorProvider.CreateValidators(ClientValidatorProviderContext)()"/>
/// is called. /// is called.
/// </summary> /// </summary>
public IList<ClientValidatorItem> Results { get; } public IList<ClientValidatorItem> Results { get; }

View File

@ -9,10 +9,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
public interface IClientModelValidatorProvider public interface IClientModelValidatorProvider
{ {
/// <summary> /// <summary>
/// Gets set of <see cref="IClientModelValidator"/>s by updating /// Creates set of <see cref="IClientModelValidator"/>s by updating
/// <see cref="ClientValidatorItem.Validator"/> in <see cref="ClientValidatorProviderContext.Results"/>. /// <see cref="ClientValidatorItem.Validator"/> in <see cref="ClientValidatorProviderContext.Results"/>.
/// </summary> /// </summary>
/// <param name="context">The <see cref="ClientModelValidationContext"/> associated with this call.</param> /// <param name="context">The <see cref="ClientModelValidationContext"/> associated with this call.</param>
void GetValidators(ClientValidatorProviderContext context); void CreateValidators(ClientValidatorProviderContext context);
} }
} }

View File

@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
public interface IModelValidatorProvider public interface IModelValidatorProvider
{ {
/// <summary> /// <summary>
/// Gets the validators for <see cref="ModelValidatorProviderContext.ModelMetadata"/>. /// Creates the validators for <see cref="ModelValidatorProviderContext.ModelMetadata"/>.
/// </summary> /// </summary>
/// <param name="context">The <see cref="ModelValidatorProviderContext"/>.</param> /// <param name="context">The <see cref="ModelValidatorProviderContext"/>.</param>
/// <remarks> /// <remarks>
@ -17,6 +17,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
/// <see cref="ValidatorItem"/> instance which should be added to /// <see cref="ValidatorItem"/> instance which should be added to
/// <see cref="ModelValidatorProviderContext.Results"/>. /// <see cref="ModelValidatorProviderContext.Results"/>.
/// </remarks> /// </remarks>
void GetValidators(ModelValidatorProviderContext context); void CreateValidators(ModelValidatorProviderContext context);
} }
} }

View File

@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
/// <summary> /// <summary>
/// Gets the list of <see cref="ValidatorItem"/> instances. <see cref="IModelValidatorProvider"/> instances /// Gets the list of <see cref="ValidatorItem"/> instances. <see cref="IModelValidatorProvider"/> instances
/// should add the appropriate <see cref="ValidatorItem.Validator"/> properties when /// should add the appropriate <see cref="ValidatorItem.Validator"/> properties when
/// <see cref="IModelValidatorProvider.GetValidators(ModelValidatorProviderContext)"/> /// <see cref="IModelValidatorProvider.CreateValidators(ModelValidatorProviderContext)"/>
/// is called. /// is called.
/// </summary> /// </summary>
public IList<ValidatorItem> Results { get; } public IList<ValidatorItem> Results { get; }

View File

@ -0,0 +1,40 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
namespace Microsoft.AspNetCore.Mvc.ModelBinding
{
/// <summary>
/// A context for <see cref="IValueProviderFactory"/>.
/// </summary>
public class ValueProviderFactoryContext
{
/// <summary>
/// Creates a new <see cref="ValueProviderFactoryContext"/>.
/// </summary>
/// <param name="context">The <see cref="ActionContext"/>.</param>
public ValueProviderFactoryContext(ActionContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
ActionContext = context;
}
/// <summary>
/// Gets the <see cref="ActionContext"/> associated with this context.
/// </summary>
public ActionContext ActionContext { get; }
/// <summary>
/// Gets the list of <see cref="IValueProvider"/> instances.
/// <see cref="IValueProviderFactory"/> instances should add the appropriate
/// <see cref="IValueProvider"/> instances to this list.
/// </summary>
public IList<IValueProvider> ValueProviders { get; } = new List<IValueProvider>();
}
}

View File

@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
{ {
var context = new ClientValidatorProviderContext(metadata, items); var context = new ClientValidatorProviderContext(metadata, items);
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
} }
private IReadOnlyList<IClientModelValidator> ExtractValidators(List<ClientValidatorItem> items) private IReadOnlyList<IClientModelValidator> ExtractValidators(List<ClientValidatorItem> items)

View File

@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
/// <inheritdoc /> /// <inheritdoc />
public void GetBindingMetadata(BindingMetadataProviderContext context) public void CreateBindingMetadata(BindingMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
/// <inheritdoc /> /// <inheritdoc />
public virtual void GetBindingMetadata(BindingMetadataProviderContext context) public virtual void CreateBindingMetadata(BindingMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {
@ -34,12 +34,12 @@ namespace Microsoft.AspNetCore.Mvc.Internal
foreach (var provider in _providers.OfType<IBindingMetadataProvider>()) foreach (var provider in _providers.OfType<IBindingMetadataProvider>())
{ {
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
} }
} }
/// <inheritdoc /> /// <inheritdoc />
public virtual void GetDisplayMetadata(DisplayMetadataProviderContext context) public virtual void CreateDisplayMetadata(DisplayMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {
@ -48,12 +48,12 @@ namespace Microsoft.AspNetCore.Mvc.Internal
foreach (var provider in _providers.OfType<IDisplayMetadataProvider>()) foreach (var provider in _providers.OfType<IDisplayMetadataProvider>())
{ {
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
} }
} }
/// <inheritdoc /> /// <inheritdoc />
public virtual void GetValidationMetadata(ValidationMetadataProviderContext context) public virtual void CreateValidationMetadata(ValidationMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {
@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
foreach (var provider in _providers.OfType<IValidationMetadataProvider>()) foreach (var provider in _providers.OfType<IValidationMetadataProvider>())
{ {
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
} }
} }
} }

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
public class DefaultModelValidatorProvider : IModelValidatorProvider public class DefaultModelValidatorProvider : IModelValidatorProvider
{ {
/// <inheritdoc /> /// <inheritdoc />
public void GetValidators(ModelValidatorProviderContext context) public void CreateValidators(ModelValidatorProviderContext context)
{ {
//Perf: Avoid allocations here //Perf: Avoid allocations here
for (var i = 0; i < context.Results.Count; i++) for (var i = 0; i < context.Results.Count; i++)

View File

@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
public class DefaultValidationMetadataProvider : IValidationMetadataProvider public class DefaultValidationMetadataProvider : IValidationMetadataProvider
{ {
/// <inheritdoc /> /// <inheritdoc />
public void GetValidationMetadata(ValidationMetadataProviderContext context) public void CreateValidationMetadata(ValidationMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -364,17 +364,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
Context.ValidatorProviders = _resourceExecutingContext.ValidatorProviders; Context.ValidatorProviders = _resourceExecutingContext.ValidatorProviders;
var valueProviders = new List<IValueProvider>(); var valueProviders = new List<IValueProvider>();
var factoryContext = new ValueProviderFactoryContext(Context);
for (var i = 0; i < _resourceExecutingContext.ValueProviderFactories.Count; i++) for (var i = 0; i < _resourceExecutingContext.ValueProviderFactories.Count; i++)
{ {
var factory = _resourceExecutingContext.ValueProviderFactories[i]; var factory = _resourceExecutingContext.ValueProviderFactories[i];
var valueProvider = await factory.GetValueProviderAsync(Context); await factory.CreateValueProviderAsync(factoryContext);
if (valueProvider != null)
{
valueProviders.Add(valueProvider);
}
} }
Context.ValueProviders = valueProviders; Context.ValueProviders = factoryContext.ValueProviders;
// >> ExceptionFilters >> Model Binding >> ActionFilters >> Action // >> ExceptionFilters >> Model Binding >> ActionFilters >> Action
await InvokeAllExceptionFiltersAsync(); await InvokeAllExceptionFiltersAsync();

View File

@ -89,7 +89,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
private void ExecuteProvider(IModelValidatorProvider validatorProvider, ModelMetadata metadata, List<ValidatorItem> items) private void ExecuteProvider(IModelValidatorProvider validatorProvider, ModelMetadata metadata, List<ValidatorItem> items)
{ {
var context = new ModelValidatorProviderContext(metadata, items); var context = new ModelValidatorProviderContext(metadata, items);
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
} }
private IReadOnlyList<IModelValidator> ExtractValidators(List<ValidatorItem> items) private IReadOnlyList<IModelValidator> ExtractValidators(List<ValidatorItem> items)

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
{ {
private readonly ModelBindingMessageProvider _messageProvider = CreateMessageProvider(); private readonly ModelBindingMessageProvider _messageProvider = CreateMessageProvider();
public void GetBindingMetadata(BindingMetadataProviderContext context) public void CreateBindingMetadata(BindingMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -9,30 +9,38 @@ using Microsoft.AspNetCore.Mvc.Internal;
namespace Microsoft.AspNetCore.Mvc.ModelBinding namespace Microsoft.AspNetCore.Mvc.ModelBinding
{ {
/// <summary>
/// A <see cref="IValueProviderFactory"/> for <see cref="FormValueProvider"/>.
/// </summary>
public class FormValueProviderFactory : IValueProviderFactory public class FormValueProviderFactory : IValueProviderFactory
{ {
public Task<IValueProvider> GetValueProviderAsync(ActionContext context) /// <inheritdoc />
public Task CreateValueProviderAsync(ValueProviderFactoryContext context)
{ {
if (context == null) if (context == null)
{ {
throw new ArgumentNullException(nameof(context)); throw new ArgumentNullException(nameof(context));
} }
var request = context.HttpContext.Request; var request = context.ActionContext.HttpContext.Request;
if (request.HasFormContentType) if (request.HasFormContentType)
{ {
return CreateValueProviderAsync(request); // Allocating a Task only when the body is form data.
return AddValueProviderAsync(context);
} }
return TaskCache<IValueProvider>.DefaultCompletedTask; return TaskCache.CompletedTask;
} }
private static async Task<IValueProvider> CreateValueProviderAsync(HttpRequest request) private static async Task AddValueProviderAsync(ValueProviderFactoryContext context)
{ {
return new FormValueProvider( var request = context.ActionContext.HttpContext.Request;
var valueProvider = new FormValueProvider(
BindingSource.Form, BindingSource.Form,
await request.ReadFormAsync(), await request.ReadFormAsync(),
CultureInfo.CurrentCulture); CultureInfo.CurrentCulture);
context.ValueProviders.Add(valueProvider);
} }
} }
} }

View File

@ -19,28 +19,32 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
public class JQueryFormValueProviderFactory : IValueProviderFactory public class JQueryFormValueProviderFactory : IValueProviderFactory
{ {
/// <inheritdoc /> /// <inheritdoc />
public Task<IValueProvider> GetValueProviderAsync(ActionContext context) public Task CreateValueProviderAsync(ValueProviderFactoryContext context)
{ {
if (context == null) if (context == null)
{ {
throw new ArgumentNullException(nameof(context)); throw new ArgumentNullException(nameof(context));
} }
var request = context.HttpContext.Request; var request = context.ActionContext.HttpContext.Request;
if (request.HasFormContentType) if (request.HasFormContentType)
{ {
return CreateValueProviderAsync(request); // Allocating a Task only when the body is form data.
return AddValueProviderAsync(context);
} }
return TaskCache<IValueProvider>.DefaultCompletedTask; return TaskCache.CompletedTask;
} }
private static async Task<IValueProvider> CreateValueProviderAsync(HttpRequest request) private static async Task AddValueProviderAsync(ValueProviderFactoryContext context)
{ {
return new JQueryFormValueProvider( var request = context.ActionContext.HttpContext.Request;
var valueProvider = new JQueryFormValueProvider(
BindingSource.Form, BindingSource.Form,
await GetValueCollectionAsync(request), await GetValueCollectionAsync(request),
CultureInfo.CurrentCulture); CultureInfo.CurrentCulture);
context.ValueProviders.Add(valueProvider);
} }
private static async Task<IDictionary<string, StringValues>> GetValueCollectionAsync(HttpRequest request) private static async Task<IDictionary<string, StringValues>> GetValueCollectionAsync(HttpRequest request)

View File

@ -82,7 +82,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
if (_details.BindingMetadata == null) if (_details.BindingMetadata == null)
{ {
var context = new BindingMetadataProviderContext(Identity, _details.ModelAttributes); var context = new BindingMetadataProviderContext(Identity, _details.ModelAttributes);
_detailsProvider.GetBindingMetadata(context); _detailsProvider.CreateBindingMetadata(context);
_details.BindingMetadata = context.BindingMetadata; _details.BindingMetadata = context.BindingMetadata;
} }
@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
if (_details.DisplayMetadata == null) if (_details.DisplayMetadata == null)
{ {
var context = new DisplayMetadataProviderContext(Identity, _details.ModelAttributes); var context = new DisplayMetadataProviderContext(Identity, _details.ModelAttributes);
_detailsProvider.GetDisplayMetadata(context); _detailsProvider.CreateDisplayMetadata(context);
_details.DisplayMetadata = context.DisplayMetadata; _details.DisplayMetadata = context.DisplayMetadata;
} }
@ -124,7 +124,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
if (_details.ValidationMetadata == null) if (_details.ValidationMetadata == null)
{ {
var context = new ValidationMetadataProviderContext(Identity, _details.ModelAttributes); var context = new ValidationMetadataProviderContext(Identity, _details.ModelAttributes);
_detailsProvider.GetValidationMetadata(context); _detailsProvider.CreateValidationMetadata(context);
_details.ValidationMetadata = context.ValidationMetadata; _details.ValidationMetadata = context.ValidationMetadata;
} }

View File

@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
public interface IBindingMetadataProvider : IMetadataDetailsProvider public interface IBindingMetadataProvider : IMetadataDetailsProvider
{ {
/// <summary> /// <summary>
/// Gets the values for properties of <see cref="DisplayMetadata"/>. /// Sets the values for properties of <see cref="BindingMetadataProviderContext.BindingMetadata"/>.
/// </summary> /// </summary>
/// <param name="context">The <see cref="BindingMetadataProviderContext"/>.</param> /// <param name="context">The <see cref="BindingMetadataProviderContext"/>.</param>
void GetBindingMetadata(BindingMetadataProviderContext context); void CreateBindingMetadata(BindingMetadataProviderContext context);
} }
} }

View File

@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
public interface IDisplayMetadataProvider : IMetadataDetailsProvider public interface IDisplayMetadataProvider : IMetadataDetailsProvider
{ {
/// <summary> /// <summary>
/// Gets the values for properties of <see cref="DisplayMetadata"/>. /// Sets the values for properties of <see cref="DisplayMetadataProviderContext.DisplayMetadata"/>.
/// </summary> /// </summary>
/// <param name="context">The <see cref="DisplayMetadataProviderContext"/>.</param> /// <param name="context">The <see cref="DisplayMetadataProviderContext"/>.</param>
void GetDisplayMetadata(DisplayMetadataProviderContext context); void CreateDisplayMetadata(DisplayMetadataProviderContext context);
} }
} }

View File

@ -12,6 +12,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
/// Gets the values for properties of <see cref="ValidationMetadata"/>. /// Gets the values for properties of <see cref="ValidationMetadata"/>.
/// </summary> /// </summary>
/// <param name="context">The <see cref="ValidationMetadataProviderContext"/>.</param> /// <param name="context">The <see cref="ValidationMetadataProviderContext"/>.</param>
void GetValidationMetadata(ValidationMetadataProviderContext context); void CreateValidationMetadata(ValidationMetadataProviderContext context);
} }
} }

View File

@ -4,6 +4,7 @@
using System; using System;
using System.Globalization; using System.Globalization;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Internal;
namespace Microsoft.AspNetCore.Mvc.ModelBinding namespace Microsoft.AspNetCore.Mvc.ModelBinding
{ {
@ -14,17 +15,21 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
public class QueryStringValueProviderFactory : IValueProviderFactory public class QueryStringValueProviderFactory : IValueProviderFactory
{ {
/// <inheritdoc /> /// <inheritdoc />
public Task<IValueProvider> GetValueProviderAsync(ActionContext context) public Task CreateValueProviderAsync(ValueProviderFactoryContext context)
{ {
if (context == null) if (context == null)
{ {
throw new ArgumentNullException(nameof(context)); throw new ArgumentNullException(nameof(context));
} }
return Task.FromResult<IValueProvider>(new QueryStringValueProvider( var valueProvider = new QueryStringValueProvider(
BindingSource.Query, BindingSource.Query,
context.HttpContext.Request.Query, context.ActionContext.HttpContext.Request.Query,
CultureInfo.InvariantCulture)); CultureInfo.InvariantCulture);
context.ValueProviders.Add(valueProvider);
return TaskCache.CompletedTask;
} }
} }
} }

View File

@ -3,6 +3,7 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Internal;
namespace Microsoft.AspNetCore.Mvc.ModelBinding namespace Microsoft.AspNetCore.Mvc.ModelBinding
{ {
@ -12,16 +13,20 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
public class RouteValueProviderFactory : IValueProviderFactory public class RouteValueProviderFactory : IValueProviderFactory
{ {
/// <inheritdoc /> /// <inheritdoc />
public Task<IValueProvider> GetValueProviderAsync(ActionContext context) public Task CreateValueProviderAsync(ValueProviderFactoryContext context)
{ {
if (context == null) if (context == null)
{ {
throw new ArgumentNullException(nameof(context)); throw new ArgumentNullException(nameof(context));
} }
return Task.FromResult<IValueProvider>(new RouteValueProvider( var valueProvider = new RouteValueProvider(
BindingSource.Path, BindingSource.Path,
context.RouteData.Values)); context.ActionContext.RouteData.Values);
context.ValueProviders.Add(valueProvider);
return TaskCache.CompletedTask;
} }
} }
} }

View File

@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
public IReadOnlyList<IClientModelValidatorProvider> ValidatorProviders { get; } public IReadOnlyList<IClientModelValidatorProvider> ValidatorProviders { get; }
/// <inheritdoc /> /// <inheritdoc />
public void GetValidators(ClientValidatorProviderContext context) public void CreateValidators(ClientValidatorProviderContext context)
{ {
if (context == null) if (context == null)
{ {
@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
// Perf: Avoid allocations // Perf: Avoid allocations
for (var i = 0; i < ValidatorProviders.Count; i++) for (var i = 0; i < ValidatorProviders.Count; i++)
{ {
ValidatorProviders[i].GetValidators(context); ValidatorProviders[i].CreateValidators(context);
} }
} }
} }

View File

@ -33,12 +33,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
public IList<IModelValidatorProvider> ValidatorProviders { get; } public IList<IModelValidatorProvider> ValidatorProviders { get; }
/// <inheritdoc /> /// <inheritdoc />
public void GetValidators(ModelValidatorProviderContext context) public void CreateValidators(ModelValidatorProviderContext context)
{ {
// Perf: Avoid allocations // Perf: Avoid allocations
for (var i = 0; i < ValidatorProviders.Count; i++) for (var i = 0; i < ValidatorProviders.Count; i++)
{ {
ValidatorProviders[i].GetValidators(context); ValidatorProviders[i].CreateValidators(context);
} }
} }
} }

View File

@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
public string FullTypeName { get; } public string FullTypeName { get; }
/// <inheritdoc /> /// <inheritdoc />
public void GetValidationMetadata(ValidationMetadataProviderContext context) public void CreateValidationMetadata(ValidationMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
/// <inheritdoc /> /// <inheritdoc />
public void GetValidators(ClientValidatorProviderContext context) public void CreateValidators(ClientValidatorProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
IValidationMetadataProvider IValidationMetadataProvider
{ {
/// <inheritdoc /> /// <inheritdoc />
public void GetBindingMetadata(BindingMetadataProviderContext context) public void CreateBindingMetadata(BindingMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
/// <inheritdoc /> /// <inheritdoc />
public void GetDisplayMetadata(DisplayMetadataProviderContext context) public void CreateDisplayMetadata(DisplayMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {
@ -219,7 +219,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
/// <inheritdoc /> /// <inheritdoc />
public void GetValidationMetadata(ValidationMetadataProviderContext context) public void CreateValidationMetadata(ValidationMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
_stringLocalizerFactory = stringLocalizerFactory; _stringLocalizerFactory = stringLocalizerFactory;
} }
public void GetValidators(ModelValidatorProviderContext context) public void CreateValidators(ModelValidatorProviderContext context)
{ {
IStringLocalizer stringLocalizer = null; IStringLocalizer stringLocalizer = null;
if (_stringLocalizerFactory != null && _options.Value.DataAnnotationLocalizerProvider != null) if (_stringLocalizerFactory != null && _options.Value.DataAnnotationLocalizerProvider != null)

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
public class DefaultClientModelValidatorProvider : IClientModelValidatorProvider public class DefaultClientModelValidatorProvider : IClientModelValidatorProvider
{ {
/// <inheritdoc /> /// <inheritdoc />
public void GetValidators(ClientValidatorProviderContext context) public void CreateValidators(ClientValidatorProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
public class NumericClientModelValidatorProvider : IClientModelValidatorProvider public class NumericClientModelValidatorProvider : IClientModelValidatorProvider
{ {
/// <inheritdoc /> /// <inheritdoc />
public void GetValidators(ClientValidatorProviderContext context) public void CreateValidators(ClientValidatorProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
public class DataMemberRequiredBindingMetadataProvider : IBindingMetadataProvider public class DataMemberRequiredBindingMetadataProvider : IBindingMetadataProvider
{ {
/// <inheritdoc /> /// <inheritdoc />
public void GetBindingMetadata(BindingMetadataProviderContext context) public void CreateBindingMetadata(BindingMetadataProviderContext context)
{ {
if (context == null) if (context == null)
{ {

View File

@ -1509,7 +1509,7 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
validator1.Validator = validator.Object; validator1.Validator = validator.Object;
var provider = new Mock<IModelValidatorProvider>(); var provider = new Mock<IModelValidatorProvider>();
provider.Setup(v => v.GetValidators(It.IsAny<ModelValidatorProviderContext>())) provider.Setup(v => v.CreateValidators(It.IsAny<ModelValidatorProviderContext>()))
.Callback<ModelValidatorProviderContext>(c => c.Results.Add(validator1)); .Callback<ModelValidatorProviderContext>(c => c.Results.Add(validator1));
var binder = new StubModelBinder(); var binder = new StubModelBinder();
@ -1546,7 +1546,7 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test
validator1.Validator = validator.Object; validator1.Validator = validator.Object;
var provider = new Mock<IModelValidatorProvider>(); var provider = new Mock<IModelValidatorProvider>();
provider.Setup(v => v.GetValidators(It.IsAny<ModelValidatorProviderContext>())) provider.Setup(v => v.CreateValidators(It.IsAny<ModelValidatorProviderContext>()))
.Callback<ModelValidatorProviderContext>(c => c.Results.Add(validator1)); .Callback<ModelValidatorProviderContext>(c => c.Results.Add(validator1));
var binder = new StubModelBinder(); var binder = new StubModelBinder();

View File

@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
private class ProviderWithNonReusableValidators : IClientModelValidatorProvider private class ProviderWithNonReusableValidators : IClientModelValidatorProvider
{ {
public void GetValidators(ClientValidatorProviderContext context) public void CreateValidators(ClientValidatorProviderContext context)
{ {
for (var i = 0; i < context.Results.Count; i++) for (var i = 0; i < context.Results.Count; i++)
{ {

View File

@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
public class DefaultModelMetadataBindingDetailsProviderTest public class DefaultModelMetadataBindingDetailsProviderTest
{ {
[Fact] [Fact]
public void GetBindingDetails_FindsBinderTypeProvider() public void CreateBindingDetails_FindsBinderTypeProvider()
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -27,14 +27,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(typeof(HeaderModelBinder), context.BindingMetadata.BinderType); Assert.Equal(typeof(HeaderModelBinder), context.BindingMetadata.BinderType);
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBinderTypeProvider_IfNullFallsBack() public void CreateBindingDetails_FindsBinderTypeProvider_IfNullFallsBack()
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -51,14 +51,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(typeof(HeaderModelBinder), context.BindingMetadata.BinderType); Assert.Equal(typeof(HeaderModelBinder), context.BindingMetadata.BinderType);
} }
[Fact] [Fact]
public void GetBindingDetails_FindsModelName() public void CreateBindingDetails_FindsModelName()
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -74,14 +74,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal("Product", context.BindingMetadata.BinderModelName); Assert.Equal("Product", context.BindingMetadata.BinderModelName);
} }
[Fact] [Fact]
public void GetBindingDetails_FindsModelName_IfNullFallsBack() public void CreateBindingDetails_FindsModelName_IfNullFallsBack()
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -98,14 +98,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal("Product", context.BindingMetadata.BinderModelName); Assert.Equal("Product", context.BindingMetadata.BinderModelName);
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindingSource() public void CreateBindingDetails_FindsBindingSource()
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -121,14 +121,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(BindingSource.Body, context.BindingMetadata.BindingSource); Assert.Equal(BindingSource.Body, context.BindingMetadata.BindingSource);
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindingSource_IfNullFallsBack() public void CreateBindingDetails_FindsBindingSource_IfNullFallsBack()
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -145,14 +145,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(BindingSource.Body, context.BindingMetadata.BindingSource); Assert.Equal(BindingSource.Body, context.BindingMetadata.BindingSource);
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindingBehaviorNever_OnProperty() public void CreateBindingDetails_FindsBindingBehaviorNever_OnProperty()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -167,7 +167,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.False(context.BindingMetadata.IsBindingAllowed); Assert.False(context.BindingMetadata.IsBindingAllowed);
@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindNever_OnProperty() public void CreateBindingDetails_FindsBindNever_OnProperty()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -190,7 +190,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.False(context.BindingMetadata.IsBindingAllowed); Assert.False(context.BindingMetadata.IsBindingAllowed);
@ -198,7 +198,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindingBehaviorOptional_OnProperty() public void CreateBindingDetails_FindsBindingBehaviorOptional_OnProperty()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -213,7 +213,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -221,7 +221,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindingBehaviorRequired_OnProperty() public void CreateBindingDetails_FindsBindingBehaviorRequired_OnProperty()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -236,7 +236,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -244,7 +244,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindRequired_OnProperty() public void CreateBindingDetails_FindsBindRequired_OnProperty()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -259,7 +259,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -269,7 +269,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
// These attributes have conflicting behavior - the 'required' behavior should be used because // These attributes have conflicting behavior - the 'required' behavior should be used because
// of ordering. // of ordering.
[Fact] [Fact]
public void GetBindingDetails_UsesFirstAttribute() public void CreateBindingDetails_UsesFirstAttribute()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -285,7 +285,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -293,7 +293,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindRequired_OnContainerClass() public void CreateBindingDetails_FindsBindRequired_OnContainerClass()
{ {
// Arrange // Arrange
var context = new BindingMetadataProviderContext( var context = new BindingMetadataProviderContext(
@ -303,7 +303,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -311,7 +311,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindNever_OnContainerClass() public void CreateBindingDetails_FindsBindNever_OnContainerClass()
{ {
// Arrange // Arrange
var context = new BindingMetadataProviderContext( var context = new BindingMetadataProviderContext(
@ -321,7 +321,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.False(context.BindingMetadata.IsBindingAllowed); Assert.False(context.BindingMetadata.IsBindingAllowed);
@ -329,7 +329,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_FindsBindNever_OnBaseClass() public void CreateBindingDetails_FindsBindNever_OnBaseClass()
{ {
// Arrange // Arrange
var context = new BindingMetadataProviderContext( var context = new BindingMetadataProviderContext(
@ -339,7 +339,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.False(context.BindingMetadata.IsBindingAllowed); Assert.False(context.BindingMetadata.IsBindingAllowed);
@ -347,7 +347,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_OverrideBehaviorOnClass_OverrideWithOptional() public void CreateBindingDetails_OverrideBehaviorOnClass_OverrideWithOptional()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -362,7 +362,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -370,7 +370,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_OverrideBehaviorOnClass_OverrideWithRequired() public void CreateBindingDetails_OverrideBehaviorOnClass_OverrideWithRequired()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -385,7 +385,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_OverrideInheritedBehaviorOnClass_OverrideWithRequired() public void CreateBindingDetails_OverrideInheritedBehaviorOnClass_OverrideWithRequired()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -408,7 +408,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -416,7 +416,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetBindingDetails_OverrideBehaviorOnClass_OverrideWithNever() public void CreateBindingDetails_OverrideBehaviorOnClass_OverrideWithNever()
{ {
// Arrange // Arrange
var propertyAttributes = new object[] var propertyAttributes = new object[]
@ -431,7 +431,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.False(context.BindingMetadata.IsBindingAllowed); Assert.False(context.BindingMetadata.IsBindingAllowed);
@ -440,7 +440,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
// This overrides an inherited class-level attribute with a different class-level attribute. // This overrides an inherited class-level attribute with a different class-level attribute.
[Fact] [Fact]
public void GetBindingDetails_OverrideBehaviorOnBaseClass_OverrideWithRequired_OnClass() public void CreateBindingDetails_OverrideBehaviorOnBaseClass_OverrideWithRequired_OnClass()
{ {
// Arrange // Arrange
var context = new BindingMetadataProviderContext( var context = new BindingMetadataProviderContext(
@ -450,7 +450,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingAllowed); Assert.True(context.BindingMetadata.IsBindingAllowed);
@ -460,7 +460,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
[Theory] [Theory]
[InlineData(true)] [InlineData(true)]
[InlineData(false)] [InlineData(false)]
public void GetBindingDetails_BindingBehaviorLeftAlone_ForTypeMetadata(bool initialValue) public void CreateBindingDetails_BindingBehaviorLeftAlone_ForTypeMetadata(bool initialValue)
{ {
// Arrange // Arrange
var attributes = new object[] var attributes = new object[]
@ -479,7 +479,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingAllowed); Assert.Equal(initialValue, context.BindingMetadata.IsBindingAllowed);
@ -491,7 +491,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
[Theory] [Theory]
[InlineData(true)] [InlineData(true)]
[InlineData(false)] [InlineData(false)]
public void GetBindingDetails_BindingBehaviorLeftAlone_ForAttributeOnPropertyType(bool initialValue) public void CreateBindingDetails_BindingBehaviorLeftAlone_ForAttributeOnPropertyType(bool initialValue)
{ {
// Arrange // Arrange
var typeAttributes = new object[] var typeAttributes = new object[]
@ -510,7 +510,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); var provider = new DefaultBindingMetadataProvider(CreateMessageProvider());
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingAllowed); Assert.Equal(initialValue, context.BindingMetadata.IsBindingAllowed);

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
public class DefaultModelValidatorProviderTest public class DefaultModelValidatorProviderTest
{ {
[Fact] [Fact]
public void GetValidators_ForIValidatableObject() public void CreateValidators_ForIValidatableObject()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetValidators_ModelValidatorAttributeOnClass() public void CreateValidators_ModelValidatorAttributeOnClass()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetValidators_ModelValidatorAttributeOnProperty() public void CreateValidators_ModelValidatorAttributeOnProperty()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetValidators_ModelValidatorAttributeOnPropertyAndClass() public void CreateValidators_ModelValidatorAttributeOnPropertyAndClass()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -101,7 +101,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetValidators_FromModelMetadataType_SingleValidator() public void CreateValidators_FromModelMetadataType_SingleValidator()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -123,7 +123,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
} }
[Fact] [Fact]
public void GetValidators_FromModelMetadataType_MergedValidators() public void CreateValidators_FromModelMetadataType_MergedValidators()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;

View File

@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
private class ProviderWithNonReusableValidators : IModelValidatorProvider private class ProviderWithNonReusableValidators : IModelValidatorProvider
{ {
public void GetValidators(ModelValidatorProviderContext context) public void CreateValidators(ModelValidatorProviderContext context)
{ {
for (var i = 0; i < context.Results.Count; i++) for (var i = 0; i < context.Results.Count; i++)
{ {

View File

@ -23,10 +23,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
var factory = new FormValueProviderFactory(); var factory = new FormValueProviderFactory();
// Act // Act
var result = await factory.GetValueProviderAsync(context); await factory.CreateValueProviderAsync(context);
// Assert // Assert
Assert.Null(result); Assert.Empty(context.ValueProviders);
} }
[Theory] [Theory]
@ -41,14 +41,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
var factory = new FormValueProviderFactory(); var factory = new FormValueProviderFactory();
// Act // Act
var result = await factory.GetValueProviderAsync(context); await factory.CreateValueProviderAsync(context);
// Assert // Assert
var valueProvider = Assert.IsType<FormValueProvider>(result); var valueProvider = Assert.IsType<FormValueProvider>(Assert.Single(context.ValueProviders));
Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture); Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture);
} }
private static ActionContext CreateContext(string contentType) private static ValueProviderFactoryContext CreateContext(string contentType)
{ {
var context = new DefaultHttpContext(); var context = new DefaultHttpContext();
context.Request.ContentType = contentType; context.Request.ContentType = contentType;
@ -58,7 +58,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
context.Request.Form = new FormCollection(new Dictionary<string, StringValues>()); context.Request.Form = new FormCollection(new Dictionary<string, StringValues>());
} }
return new ActionContext(context, new RouteData(), new ActionDescriptor()); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor());
return new ValueProviderFactoryContext(actionContext);
} }
} }
} }

View File

@ -47,10 +47,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
var factory = new JQueryFormValueProviderFactory(); var factory = new JQueryFormValueProviderFactory();
// Act // Act
var result = await factory.GetValueProviderAsync(context); await factory.CreateValueProviderAsync(context);
// Assert // Assert
Assert.Null(result); Assert.Empty(context.ValueProviders);
} }
[Theory] [Theory]
@ -58,17 +58,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
[InlineData("application/x-www-form-urlencoded;charset=utf-8")] [InlineData("application/x-www-form-urlencoded;charset=utf-8")]
[InlineData("multipart/form-data; boundary=----WebKitFormBoundarymx2fSWqWSd0OxQqq")] [InlineData("multipart/form-data; boundary=----WebKitFormBoundarymx2fSWqWSd0OxQqq")]
[InlineData("multipart/form-data; boundary=----WebKitFormBoundarymx2fSWqWSd0OxQqq; charset=utf-8")] [InlineData("multipart/form-data; boundary=----WebKitFormBoundarymx2fSWqWSd0OxQqq; charset=utf-8")]
public async Task GetValueProviderAsync_ReturnsValueProvider_WithCurrentCulture(string contentType) public async Task CreateValueProviderAsync_ReturnsValueProvider_WithCurrentCulture(string contentType)
{ {
// Arrange // Arrange
var context = CreateContext(contentType, formValues: null); var context = CreateContext(contentType, formValues: null);
var factory = new JQueryFormValueProviderFactory(); var factory = new JQueryFormValueProviderFactory();
// Act // Act
var result = await factory.GetValueProviderAsync(context); await factory.CreateValueProviderAsync(context);
// Assert // Assert
var valueProvider = Assert.IsType<JQueryFormValueProvider>(result); var valueProvider = Assert.IsType<JQueryFormValueProvider>(Assert.Single(context.ValueProviders));
Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture); Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture);
} }
@ -109,14 +109,15 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
var factory = new JQueryFormValueProviderFactory(); var factory = new JQueryFormValueProviderFactory();
// Act // Act
var valueProvider = await factory.GetValueProviderAsync(context); await factory.CreateValueProviderAsync(context);
var result = valueProvider.GetValue(key);
// Assert // Assert
var valueProvider = Assert.Single(context.ValueProviders);
var result = valueProvider.GetValue(key);
Assert.Equal("found", (string)result); Assert.Equal("found", (string)result);
} }
private static ActionContext CreateContext(string contentType, Dictionary<string, StringValues> formValues) private static ValueProviderFactoryContext CreateContext(string contentType, Dictionary<string, StringValues> formValues)
{ {
var context = new DefaultHttpContext(); var context = new DefaultHttpContext();
context.Request.ContentType = contentType; context.Request.ContentType = contentType;
@ -126,7 +127,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
context.Request.Form = new FormCollection(formValues ?? new Dictionary<string, StringValues>()); context.Request.Form = new FormCollection(formValues ?? new Dictionary<string, StringValues>());
} }
return new ActionContext(context, new RouteData(), new ActionDescriptor()); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor());
return new ValueProviderFactoryContext(actionContext);
} }
} }
} }

View File

@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0]));
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata);
@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0]));
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata);
@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
context.ValidationMetadata.ValidatorMetadata.Add(attribute); context.ValidationMetadata.ValidatorMetadata.Add(attribute);
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata);

View File

@ -24,13 +24,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
context.SetupGet(c => c.Items).Returns(new Dictionary<object, object>()); context.SetupGet(c => c.Items).Returns(new Dictionary<object, object>());
context.SetupGet(c => c.Request).Returns(request.Object); context.SetupGet(c => c.Request).Returns(request.Object);
var actionContext = new ActionContext(context.Object, new RouteData(), new ActionDescriptor()); var actionContext = new ActionContext(context.Object, new RouteData(), new ActionDescriptor());
var factoryContext = new ValueProviderFactoryContext(actionContext);
var factory = new QueryStringValueProviderFactory(); var factory = new QueryStringValueProviderFactory();
// Act // Act
var result = await factory.GetValueProviderAsync(actionContext); await factory.CreateValueProviderAsync(factoryContext);
// Assert // Assert
var valueProvider = Assert.IsType<QueryStringValueProvider>(result); var valueProvider = Assert.IsType<QueryStringValueProvider>(Assert.Single(factoryContext.ValueProviders));
Assert.Equal(CultureInfo.InvariantCulture, valueProvider.Culture); Assert.Equal(CultureInfo.InvariantCulture, valueProvider.Culture);
} }
} }

View File

@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
var validator3 = new ValidatorItem(validatorMetadata); var validator3 = new ValidatorItem(validatorMetadata);
var provider1 = new Mock<IModelValidatorProvider>(); var provider1 = new Mock<IModelValidatorProvider>();
provider1.Setup(p => p.GetValidators(It.IsAny<ModelValidatorProviderContext>())) provider1.Setup(p => p.CreateValidators(It.IsAny<ModelValidatorProviderContext>()))
.Callback<ModelValidatorProviderContext>(c => .Callback<ModelValidatorProviderContext>(c =>
{ {
c.Results.Add(validator1); c.Results.Add(validator1);
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
}); });
var provider2 = new Mock<IModelValidatorProvider>(); var provider2 = new Mock<IModelValidatorProvider>();
provider2.Setup(p => p.GetValidators(It.IsAny<ModelValidatorProviderContext>())) provider2.Setup(p => p.CreateValidators(It.IsAny<ModelValidatorProviderContext>()))
.Callback<ModelValidatorProviderContext>(c => .Callback<ModelValidatorProviderContext>(c =>
{ {
c.Results.Add(validator3); c.Results.Add(validator3);
@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
// Act // Act
var validatorProviderContext = new ModelValidatorProviderContext(modelMetadata, new List<ValidatorItem>()); var validatorProviderContext = new ModelValidatorProviderContext(modelMetadata, new List<ValidatorItem>());
compositeModelValidator.GetValidators(validatorProviderContext); compositeModelValidator.CreateValidators(validatorProviderContext);
// Assert // Assert
Assert.Equal( Assert.Equal(

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
private readonly IModelMetadataProvider _metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); private readonly IModelMetadataProvider _metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
[Fact] [Fact]
public void GetValidators_AddsRequiredAttribute_ForIsRequiredTrue() public void CreateValidators_AddsRequiredAttribute_ForIsRequiredTrue()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsClientModelValidatorProvider( var provider = new DataAnnotationsClientModelValidatorProvider(
@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_DoesNotAddDuplicateRequiredAttribute_ForIsRequiredTrue() public void CreateValidators_DoesNotAddDuplicateRequiredAttribute_ForIsRequiredTrue()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsClientModelValidatorProvider( var provider = new DataAnnotationsClientModelValidatorProvider(
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, items); var providerContext = new ClientValidatorProviderContext(metadata, items);
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);
@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_DoesNotAddRequiredAttribute_ForIsRequiredFalse() public void CreateValidators_DoesNotAddRequiredAttribute_ForIsRequiredFalse()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsClientModelValidatorProvider( var provider = new DataAnnotationsClientModelValidatorProvider(
@ -84,14 +84,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
Assert.Empty(providerContext.Results); Assert.Empty(providerContext.Results);
} }
[Fact] [Fact]
public void GetValidators_DoesNotAddExtraRequiredAttribute_IfAttributeIsSpecifiedExplicitly() public void CreateValidators_DoesNotAddExtraRequiredAttribute_IfAttributeIsSpecifiedExplicitly()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsClientModelValidatorProvider( var provider = new DataAnnotationsClientModelValidatorProvider(
@ -106,7 +106,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);
@ -127,7 +127,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);

View File

@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[Theory] [Theory]
[MemberData(nameof(DisplayDetailsData))] [MemberData(nameof(DisplayDetailsData))]
public void GetDisplayMetadata_SimpleAttributes( public void CreateDisplayMetadata_SimpleAttributes(
object attribute, object attribute,
Func<DisplayMetadata, object> accessor, Func<DisplayMetadata, object> accessor,
object expected) object expected)
@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(new object[] { attribute })); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(new object[] { attribute }));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
var value = accessor(context.DisplayMetadata); var value = accessor(context.DisplayMetadata);
@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetDisplayMetadata_FindsDisplayFormat_FromDataType() public void CreateDisplayMetadata_FindsDisplayFormat_FromDataType()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -85,14 +85,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
Assert.Same(displayFormat.DataFormatString, context.DisplayMetadata.DisplayFormatString); Assert.Same(displayFormat.DataFormatString, context.DisplayMetadata.DisplayFormatString);
} }
[Fact] [Fact]
public void GetDisplayMetadata_FindsDisplayFormat_OverridingDataType() public void CreateDisplayMetadata_FindsDisplayFormat_OverridingDataType()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -108,14 +108,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
Assert.Same(displayFormat.DataFormatString, context.DisplayMetadata.DisplayFormatString); Assert.Same(displayFormat.DataFormatString, context.DisplayMetadata.DisplayFormatString);
} }
[Fact] [Fact]
public void GetBindingMetadata_EditableAttributeFalse_SetsReadOnlyTrue() public void CreateBindingMetadata_EditableAttributeFalse_SetsReadOnlyTrue()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -127,14 +127,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsReadOnly); Assert.True(context.BindingMetadata.IsReadOnly);
} }
[Fact] [Fact]
public void GetBindingMetadata_EditableAttributeTrue_SetsReadOnlyFalse() public void CreateBindingMetadata_EditableAttributeTrue_SetsReadOnlyFalse()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -146,7 +146,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.False(context.BindingMetadata.IsReadOnly); Assert.False(context.BindingMetadata.IsReadOnly);
@ -155,7 +155,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
// This is IMPORTANT. Product code needs to use GetName() instead of .Name. It's easy to regress. // This is IMPORTANT. Product code needs to use GetName() instead of .Name. It's easy to regress.
[Fact] [Fact]
public void GetDisplayMetadata_DisplayAttribute_NameFromResources() public void CreateDisplayMetadata_DisplayAttribute_NameFromResources()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -176,7 +176,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
Assert.Equal("name from resources", context.DisplayMetadata.DisplayName()); Assert.Equal("name from resources", context.DisplayMetadata.DisplayName());
@ -184,7 +184,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
// This is IMPORTANT. Product code needs to use GetDescription() instead of .Description. It's easy to regress. // This is IMPORTANT. Product code needs to use GetDescription() instead of .Description. It's easy to regress.
[Fact] [Fact]
public void GetDisplayMetadata_DisplayAttribute_DescriptionFromResources() public void CreateDisplayMetadata_DisplayAttribute_DescriptionFromResources()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -205,7 +205,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
Assert.Equal("description from resources", context.DisplayMetadata.Description()); Assert.Equal("description from resources", context.DisplayMetadata.Description());
@ -229,7 +229,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[InlineData(typeof(StructWithFields), false)] [InlineData(typeof(StructWithFields), false)]
[InlineData(typeof(StructWithFields?), false)] [InlineData(typeof(StructWithFields?), false)]
[InlineData(typeof(StructWithProperties), false)] [InlineData(typeof(StructWithProperties), false)]
public void GetDisplayMetadata_IsEnum_ReflectsModelType(Type type, bool expectedIsEnum) public void CreateDisplayMetadata_IsEnum_ReflectsModelType(Type type, bool expectedIsEnum)
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
Assert.Equal(expectedIsEnum, context.DisplayMetadata.IsEnum); Assert.Equal(expectedIsEnum, context.DisplayMetadata.IsEnum);
@ -263,7 +263,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[InlineData(typeof(StructWithFields), false)] [InlineData(typeof(StructWithFields), false)]
[InlineData(typeof(StructWithFields?), false)] [InlineData(typeof(StructWithFields?), false)]
[InlineData(typeof(StructWithProperties), false)] [InlineData(typeof(StructWithProperties), false)]
public void GetDisplayMetadata_IsFlagsEnum_ReflectsModelType(Type type, bool expectedIsFlagsEnum) public void CreateDisplayMetadata_IsFlagsEnum_ReflectsModelType(Type type, bool expectedIsFlagsEnum)
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -273,7 +273,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
Assert.Equal(expectedIsFlagsEnum, context.DisplayMetadata.IsFlagsEnum); Assert.Equal(expectedIsFlagsEnum, context.DisplayMetadata.IsFlagsEnum);
@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[Theory] [Theory]
[MemberData(nameof(EnumNamesData))] [MemberData(nameof(EnumNamesData))]
public void GetDisplayMetadata_EnumNamesAndValues_ReflectsModelType( public void CreateDisplayMetadata_EnumNamesAndValues_ReflectsModelType(
Type type, Type type,
IReadOnlyDictionary<string, string> expectedDictionary) IReadOnlyDictionary<string, string> expectedDictionary)
{ {
@ -405,7 +405,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
// This assertion does *not* require entry orders to match. // This assertion does *not* require entry orders to match.
@ -527,7 +527,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[Theory] [Theory]
[MemberData(nameof(EnumDisplayNamesData))] [MemberData(nameof(EnumDisplayNamesData))]
public void GetDisplayMetadata_EnumGroupedDisplayNamesAndValues_ReflectsModelType( public void CreateDisplayMetadata_EnumGroupedDisplayNamesAndValues_ReflectsModelType(
Type type, Type type,
IEnumerable<KeyValuePair<EnumGroupAndName, string>> expectedKeyValuePairs) IEnumerable<KeyValuePair<EnumGroupAndName, string>> expectedKeyValuePairs)
{ {
@ -539,7 +539,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes));
// Act // Act
provider.GetDisplayMetadata(context); provider.CreateDisplayMetadata(context);
// Assert // Assert
// OrderBy is used because the order of the results may very depending on the platform / client. // OrderBy is used because the order of the results may very depending on the platform / client.
@ -551,7 +551,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidationMetadata_RequiredAttribute_SetsIsRequiredToTrue() public void CreateValidationMetadata_RequiredAttribute_SetsIsRequiredToTrue()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -563,7 +563,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0]));
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
Assert.True(context.ValidationMetadata.IsRequired); Assert.True(context.ValidationMetadata.IsRequired);
@ -573,7 +573,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[InlineData(true)] [InlineData(true)]
[InlineData(false)] [InlineData(false)]
[InlineData(null)] [InlineData(null)]
public void GetValidationMetadata_NoRequiredAttribute_IsRequiredLeftAlone(bool? initialValue) public void CreateValidationMetadata_NoRequiredAttribute_IsRequiredLeftAlone(bool? initialValue)
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -584,7 +584,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.ValidationMetadata.IsRequired = initialValue; context.ValidationMetadata.IsRequired = initialValue;
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.ValidationMetadata.IsRequired); Assert.Equal(initialValue, context.ValidationMetadata.IsRequired);
@ -594,7 +594,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[Theory] [Theory]
[InlineData(true)] [InlineData(true)]
[InlineData(false)] [InlineData(false)]
public void GetBindingMetadata_RequiredAttribute_IsBindingRequiredLeftAlone(bool initialValue) public void CreateBindingMetadata_RequiredAttribute_IsBindingRequiredLeftAlone(bool initialValue)
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -605,7 +605,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.BindingMetadata.IsBindingRequired = initialValue; context.BindingMetadata.IsBindingRequired = initialValue;
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired);
@ -615,7 +615,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[InlineData(true)] [InlineData(true)]
[InlineData(false)] [InlineData(false)]
[InlineData(null)] [InlineData(null)]
public void GetBindingDetails_NoEditableAttribute_IsReadOnlyLeftAlone(bool? initialValue) public void CreateBindingDetails_NoEditableAttribute_IsReadOnlyLeftAlone(bool? initialValue)
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -626,14 +626,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.BindingMetadata.IsReadOnly = initialValue; context.BindingMetadata.IsReadOnly = initialValue;
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsReadOnly); Assert.Equal(initialValue, context.BindingMetadata.IsReadOnly);
} }
[Fact] [Fact]
public void GetValidationDetails_ValidatableObject_ReturnsObject() public void CreateValidationDetails_ValidatableObject_ReturnsObject()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -644,7 +644,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0]));
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata);
@ -652,7 +652,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidationDetails_ValidatableObject_AlreadyInContext_Ignores() public void CreateValidationDetails_ValidatableObject_AlreadyInContext_Ignores()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsMetadataProvider(); var provider = new DataAnnotationsMetadataProvider();
@ -664,7 +664,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.ValidationMetadata.ValidatorMetadata.Add(attribute); context.ValidationMetadata.ValidatorMetadata.Add(attribute);
// Act // Act
provider.GetValidationMetadata(context); provider.CreateValidationMetadata(context);
// Assert // Assert
var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata);

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
private readonly IModelMetadataProvider _metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); private readonly IModelMetadataProvider _metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
[Fact] [Fact]
public void GetValidators_ReturnsValidatorForIValidatableObject() public void CreateValidators_ReturnsValidatorForIValidatableObject()
{ {
// Arrange // Arrange
var provider = new DataAnnotationsModelValidatorProvider( var provider = new DataAnnotationsModelValidatorProvider(
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);
@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_InsertsRequiredValidatorsFirst() public void CreateValidators_InsertsRequiredValidatorsFirst()
{ {
var provider = new DataAnnotationsModelValidatorProvider( var provider = new DataAnnotationsModelValidatorProvider(
new ValidationAttributeAdapterProvider(), new ValidationAttributeAdapterProvider(),
@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
Assert.Equal(4, providerContext.Results.Count); Assert.Equal(4, providerContext.Results.Count);
@ -71,7 +71,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = providerContext.Results.Single(); var validatorItem = providerContext.Results.Single();
@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
Assert.Single(providerContext.Results); Assert.Single(providerContext.Results);

View File

@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes, new object[0]));
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.True(context.BindingMetadata.IsBindingRequired); Assert.True(context.BindingMetadata.IsBindingRequired);
@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.BindingMetadata.IsBindingRequired = initialValue; context.BindingMetadata.IsBindingRequired = initialValue;
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired);
@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.BindingMetadata.IsBindingRequired = initialValue; context.BindingMetadata.IsBindingRequired = initialValue;
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired);
@ -104,7 +104,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.BindingMetadata.IsBindingRequired = initialValue; context.BindingMetadata.IsBindingRequired = initialValue;
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired);
@ -132,7 +132,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
context.BindingMetadata.IsBindingRequired = initialValue; context.BindingMetadata.IsBindingRequired = initialValue;
// Act // Act
provider.GetBindingMetadata(context); provider.CreateBindingMetadata(context);
// Assert // Assert
Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired);

View File

@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[InlineData(typeof(float?))] [InlineData(typeof(float?))]
[InlineData(typeof(double?))] [InlineData(typeof(double?))]
[InlineData(typeof(decimal?))] [InlineData(typeof(decimal?))]
public void GetValidators_GetsNumericValidator_ForNumericType(Type modelType) public void CreateValidators_GetsNumericValidator_ForNumericType(Type modelType)
{ {
// Arrange // Arrange
var provider = new NumericClientModelValidatorProvider(); var provider = new NumericClientModelValidatorProvider();
@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_DoesNotAddDuplicateValidators() public void CreateValidators_DoesNotAddDuplicateValidators()
{ {
// Arrange // Arrange
var provider = new NumericClientModelValidatorProvider(); var provider = new NumericClientModelValidatorProvider();
@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, items); var providerContext = new ClientValidatorProviderContext(metadata, items);
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
var validatorItem = Assert.Single(providerContext.Results); var validatorItem = Assert.Single(providerContext.Results);
@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
[InlineData(typeof(long?))] [InlineData(typeof(long?))]
[InlineData(typeof(string))] [InlineData(typeof(string))]
[InlineData(typeof(DateTime))] [InlineData(typeof(DateTime))]
public void GetValidators_DoesNotGetsNumericValidator_ForUnsupportedTypes(Type modelType) public void CreateValidators_DoesNotGetsNumericValidator_ForUnsupportedTypes(Type modelType)
{ {
// Arrange // Arrange
var provider = new NumericClientModelValidatorProvider(); var provider = new NumericClientModelValidatorProvider();
@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
provider.GetValidators(providerContext); provider.CreateValidators(providerContext);
// Assert // Assert
Assert.Empty(providerContext.Results); Assert.Empty(providerContext.Results);

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
public class DefaultModelClientValidatorProviderTest public class DefaultModelClientValidatorProviderTest
{ {
[Fact] [Fact]
public void GetValidators_ForIValidatableObject() public void CreateValidators_ForIValidatableObject()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_ClientModelValidatorAttributeOnClass() public void CreateValidators_ClientModelValidatorAttributeOnClass()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -45,7 +45,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_ClientModelValidatorAttributeOnProperty() public void CreateValidators_ClientModelValidatorAttributeOnProperty()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_ClientModelValidatorAttributeOnPropertyAndClass() public void CreateValidators_ClientModelValidatorAttributeOnPropertyAndClass()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
// RangeAttribute is an example of a ValidationAttribute with it's own adapter type. // RangeAttribute is an example of a ValidationAttribute with it's own adapter type.
[Fact] [Fact]
public void GetValidators_ClientValidatorAttribute_SpecificAdapter() public void CreateValidators_ClientValidatorAttribute_SpecificAdapter()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -114,7 +114,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_ClientValidatorAttribute_DefaultAdapter() public void CreateValidators_ClientValidatorAttribute_DefaultAdapter()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -137,7 +137,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -146,7 +146,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_FromModelMetadataType_SingleValidator() public void CreateValidators_FromModelMetadataType_SingleValidator()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -158,7 +158,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;
@ -169,7 +169,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
} }
[Fact] [Fact]
public void GetValidators_FromModelMetadataType_MergedValidators() public void CreateValidators_FromModelMetadataType_MergedValidators()
{ {
// Arrange // Arrange
var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
@ -181,7 +181,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata));
// Act // Act
validatorProvider.GetValidators(context); validatorProvider.CreateValidators(context);
// Assert // Assert
var validatorItems = context.Results; var validatorItems = context.Results;

View File

@ -93,14 +93,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
private static ControllerContext GetControllerContext(MvcOptions options, ActionContext context) private static ControllerContext GetControllerContext(MvcOptions options, ActionContext context)
{ {
var valueProviders = new List<IValueProvider>(); var valueProviderFactoryContext = new ValueProviderFactoryContext(context);
foreach (var factory in options.ValueProviderFactories) foreach (var factory in options.ValueProviderFactories)
{ {
var valueProvider = factory.GetValueProviderAsync(context).Result; factory.CreateValueProviderAsync(valueProviderFactoryContext).GetAwaiter().GetResult();
if (valueProvider != null)
{
valueProviders.Add(valueProvider);
}
} }
return new ControllerContext(context) return new ControllerContext(context)
@ -108,7 +104,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests
InputFormatters = options.InputFormatters, InputFormatters = options.InputFormatters,
ValidatorProviders = options.ModelValidatorProviders, ValidatorProviders = options.ModelValidatorProviders,
ModelBinders = options.ModelBinders, ModelBinders = options.ModelBinders,
ValueProviders = valueProviders ValueProviders = valueProviderFactoryContext.ValueProviders
}; };
} }
} }

View File

@ -127,7 +127,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
{ {
public List<MetadataBuilder> Builders { get; } = new List<MetadataBuilder>(); public List<MetadataBuilder> Builders { get; } = new List<MetadataBuilder>();
public void GetBindingMetadata(BindingMetadataProviderContext context) public void CreateBindingMetadata(BindingMetadataProviderContext context)
{ {
foreach (var builder in Builders) foreach (var builder in Builders)
{ {
@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
} }
} }
public void GetDisplayMetadata(DisplayMetadataProviderContext context) public void CreateDisplayMetadata(DisplayMetadataProviderContext context)
{ {
foreach (var builder in Builders) foreach (var builder in Builders)
{ {
@ -143,7 +143,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
} }
} }
public void GetValidationMetadata(ValidationMetadataProviderContext context) public void CreateValidationMetadata(ValidationMetadataProviderContext context)
{ {
foreach (var builder in Builders) foreach (var builder in Builders)
{ {