From 6de171f1eff65dec47c28f692b4028d8f63eab2f Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Fri, 29 Jan 2016 16:05:59 -0800 Subject: [PATCH] [Fixes #3904] Redesigned IValueProviderFactory and renamed a few methods --- .../ModelBinding/IValueProviderFactory.cs | 12 +-- .../ClientValidatorProviderContext.cs | 2 +- .../IClientModelValidatorProvider.cs | 4 +- .../Validation/IModelValidatorProvider.cs | 4 +- .../ModelValiatorProviderContext.cs | 2 +- .../ValueProviderFactoryContext.cs | 40 +++++++++ .../Internal/ClientValidatorCache.cs | 2 +- .../DefaultBindingMetadataProvider.cs | 2 +- ...DefaultCompositeMetadataDetailsProvider.cs | 12 +-- .../Internal/DefaultModelValidatorProvider.cs | 2 +- .../DefaultValidationMetadataProvider.cs | 2 +- .../Internal/FilterActionInvoker.cs | 9 +- .../Internal/ValidatorCache.cs | 2 +- .../EmptyModelMetadataProvider.cs | 2 +- .../ModelBinding/FormValueProviderFactory.cs | 20 +++-- .../JQueryFormValueProviderFactory.cs | 18 ++-- .../Metadata/DefaultModelMetadata.cs | 6 +- .../Metadata/IBindingMetadataProvider.cs | 4 +- .../Metadata/IDisplayMetadataProvider.cs | 4 +- .../Metadata/IValidationMetadataProvider.cs | 2 +- .../QueryStringValueProviderFactory.cs | 13 ++- .../ModelBinding/RouteValueProviderFactory.cs | 11 ++- .../CompositeClientModelValidatorProvider.cs | 4 +- .../CompositeModelValidatorProvider.cs | 4 +- .../Validation/ValidationExcludeFilter.cs | 2 +- ...AnnotationsClientModelValidatorProvider.cs | 2 +- .../DataAnnotationsMetadataProvider.cs | 6 +- .../DataAnnotationsModelValidatorProvider.cs | 2 +- .../DefaultClientModelValidatorProvider.cs | 2 +- .../NumericClientModelValidatorProvider.cs | 2 +- ...taMemberRequiredBindingMetadataProvider.cs | 2 +- .../ControllerBaseTest.cs | 4 +- .../Internal/ClientValidatorCacheTest.cs | 2 +- .../DefaultBindingMetadataProviderTest.cs | 88 +++++++++---------- .../DefaultModelValidatorProviderTest.cs | 24 ++--- .../Internal/ValidatorCacheTest.cs | 2 +- .../FormValueProviderFactoryTest.cs | 14 +-- .../JQueryFormValueProviderFactoryTest.cs | 21 +++-- .../DefaultValidationMetadataProviderTest.cs | 6 +- .../QueryStringValueProviderFactoryTest.cs | 5 +- .../CompositeModelValidatorProviderTest.cs | 6 +- ...tationsClientModelValidatorProviderTest.cs | 18 ++-- .../DataAnnotationsMetadataProviderTest.cs | 68 +++++++------- ...taAnnotationsModelValidatorProviderTest.cs | 12 +-- ...mberRequiredBindingMetadataProviderTest.cs | 10 +-- ...ataTypeClientModelValidatorProviderTest.cs | 12 +-- ...DefaultModelClientValidatorProviderTest.cs | 32 +++---- .../ModelBindingTestHelper.cs | 10 +-- .../TestModelMetadataProvider.cs | 6 +- 49 files changed, 301 insertions(+), 240 deletions(-) create mode 100644 src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ValueProviderFactoryContext.cs diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs index 44aea27f00..39b2948fe7 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/IValueProviderFactory.cs @@ -11,12 +11,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public interface IValueProviderFactory { /// - /// Gets a with values from the current request. + /// Creates a with values from the current request + /// and adds it to list. /// - /// The . - /// - /// A that when completed will yield a instance or null. - /// - Task GetValueProviderAsync(ActionContext context); + /// The . + /// A that when completed will add an instance + /// to list if applicable. + Task CreateValueProviderAsync(ValueProviderFactoryContext context); } } diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ClientValidatorProviderContext.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ClientValidatorProviderContext.cs index 7e827b73a1..fcfcadf14d 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ClientValidatorProviderContext.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ClientValidatorProviderContext.cs @@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// /// Gets the list of instances. /// instances should add the appropriate properties when - /// + /// /// is called. /// public IList Results { get; } diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IClientModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IClientModelValidatorProvider.cs index 78bef3dac8..adf01cf8f8 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IClientModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IClientModelValidatorProvider.cs @@ -9,10 +9,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public interface IClientModelValidatorProvider { /// - /// Gets set of s by updating + /// Creates set of s by updating /// in . /// /// The associated with this call. - void GetValidators(ClientValidatorProviderContext context); + void CreateValidators(ClientValidatorProviderContext context); } } diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IModelValidatorProvider.cs index 5976accf3b..9ed1704ca9 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/IModelValidatorProvider.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public interface IModelValidatorProvider { /// - /// Gets the validators for . + /// Creates the validators for . /// /// The . /// @@ -17,6 +17,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// instance which should be added to /// . /// - void GetValidators(ModelValidatorProviderContext context); + void CreateValidators(ModelValidatorProviderContext context); } } diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ModelValiatorProviderContext.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ModelValiatorProviderContext.cs index 4bc1832ab3..b5c96d5074 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ModelValiatorProviderContext.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/Validation/ModelValiatorProviderContext.cs @@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// /// Gets the list of instances. instances /// should add the appropriate properties when - /// + /// /// is called. /// public IList Results { get; } diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ValueProviderFactoryContext.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ValueProviderFactoryContext.cs new file mode 100644 index 0000000000..cf48d9072d --- /dev/null +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ValueProviderFactoryContext.cs @@ -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 +{ + /// + /// A context for . + /// + public class ValueProviderFactoryContext + { + /// + /// Creates a new . + /// + /// The . + public ValueProviderFactoryContext(ActionContext context) + { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + ActionContext = context; + } + + /// + /// Gets the associated with this context. + /// + public ActionContext ActionContext { get; } + + /// + /// Gets the list of instances. + /// instances should add the appropriate + /// instances to this list. + /// + public IList ValueProviders { get; } = new List(); + } +} diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/ClientValidatorCache.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/ClientValidatorCache.cs index fdaea7960e..5dcec980bc 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/ClientValidatorCache.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/ClientValidatorCache.cs @@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal { var context = new ClientValidatorProviderContext(metadata, items); - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); } private IReadOnlyList ExtractValidators(List items) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultBindingMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultBindingMetadataProvider.cs index a8d69ea777..4b9439dd46 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultBindingMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultBindingMetadataProvider.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } /// - public void GetBindingMetadata(BindingMetadataProviderContext context) + public void CreateBindingMetadata(BindingMetadataProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultCompositeMetadataDetailsProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultCompositeMetadataDetailsProvider.cs index 36cd8d04df..37dfed3868 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultCompositeMetadataDetailsProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultCompositeMetadataDetailsProvider.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } /// - public virtual void GetBindingMetadata(BindingMetadataProviderContext context) + public virtual void CreateBindingMetadata(BindingMetadataProviderContext context) { if (context == null) { @@ -34,12 +34,12 @@ namespace Microsoft.AspNetCore.Mvc.Internal foreach (var provider in _providers.OfType()) { - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); } } /// - public virtual void GetDisplayMetadata(DisplayMetadataProviderContext context) + public virtual void CreateDisplayMetadata(DisplayMetadataProviderContext context) { if (context == null) { @@ -48,12 +48,12 @@ namespace Microsoft.AspNetCore.Mvc.Internal foreach (var provider in _providers.OfType()) { - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); } } /// - public virtual void GetValidationMetadata(ValidationMetadataProviderContext context) + public virtual void CreateValidationMetadata(ValidationMetadataProviderContext context) { if (context == null) { @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal foreach (var provider in _providers.OfType()) { - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelValidatorProvider.cs index 500dc83198..11d5739c02 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultModelValidatorProvider.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal public class DefaultModelValidatorProvider : IModelValidatorProvider { /// - public void GetValidators(ModelValidatorProviderContext context) + public void CreateValidators(ModelValidatorProviderContext context) { //Perf: Avoid allocations here for (var i = 0; i < context.Results.Count; i++) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultValidationMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultValidationMetadataProvider.cs index 7917cd9144..2e3116185e 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultValidationMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultValidationMetadataProvider.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal public class DefaultValidationMetadataProvider : IValidationMetadataProvider { /// - public void GetValidationMetadata(ValidationMetadataProviderContext context) + public void CreateValidationMetadata(ValidationMetadataProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/FilterActionInvoker.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/FilterActionInvoker.cs index 703b552770..6bca1a41cb 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/FilterActionInvoker.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/FilterActionInvoker.cs @@ -364,17 +364,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal Context.ValidatorProviders = _resourceExecutingContext.ValidatorProviders; var valueProviders = new List(); + var factoryContext = new ValueProviderFactoryContext(Context); for (var i = 0; i < _resourceExecutingContext.ValueProviderFactories.Count; i++) { var factory = _resourceExecutingContext.ValueProviderFactories[i]; - var valueProvider = await factory.GetValueProviderAsync(Context); - if (valueProvider != null) - { - valueProviders.Add(valueProvider); - } + await factory.CreateValueProviderAsync(factoryContext); } - Context.ValueProviders = valueProviders; + Context.ValueProviders = factoryContext.ValueProviders; // >> ExceptionFilters >> Model Binding >> ActionFilters >> Action await InvokeAllExceptionFiltersAsync(); diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/ValidatorCache.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/ValidatorCache.cs index 832e8d949f..f1ee38da92 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/ValidatorCache.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/ValidatorCache.cs @@ -89,7 +89,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal private void ExecuteProvider(IModelValidatorProvider validatorProvider, ModelMetadata metadata, List items) { var context = new ModelValidatorProviderContext(metadata, items); - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); } private IReadOnlyList ExtractValidators(List items) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/EmptyModelMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/EmptyModelMetadataProvider.cs index 1f5bef2ad1..454df38355 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/EmptyModelMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/EmptyModelMetadataProvider.cs @@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding { private readonly ModelBindingMessageProvider _messageProvider = CreateMessageProvider(); - public void GetBindingMetadata(BindingMetadataProviderContext context) + public void CreateBindingMetadata(BindingMetadataProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormValueProviderFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormValueProviderFactory.cs index f050cbace3..50f4252c93 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormValueProviderFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormValueProviderFactory.cs @@ -9,30 +9,38 @@ using Microsoft.AspNetCore.Mvc.Internal; namespace Microsoft.AspNetCore.Mvc.ModelBinding { + /// + /// A for . + /// public class FormValueProviderFactory : IValueProviderFactory { - public Task GetValueProviderAsync(ActionContext context) + /// + public Task CreateValueProviderAsync(ValueProviderFactoryContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } - var request = context.HttpContext.Request; + var request = context.ActionContext.HttpContext.Request; if (request.HasFormContentType) { - return CreateValueProviderAsync(request); + // Allocating a Task only when the body is form data. + return AddValueProviderAsync(context); } - return TaskCache.DefaultCompletedTask; + return TaskCache.CompletedTask; } - private static async Task 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, await request.ReadFormAsync(), CultureInfo.CurrentCulture); + + context.ValueProviders.Add(valueProvider); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs index 2a162f52e2..4d4af8b13f 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/JQueryFormValueProviderFactory.cs @@ -19,28 +19,32 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public class JQueryFormValueProviderFactory : IValueProviderFactory { /// - public Task GetValueProviderAsync(ActionContext context) + public Task CreateValueProviderAsync(ValueProviderFactoryContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } - - var request = context.HttpContext.Request; + + var request = context.ActionContext.HttpContext.Request; if (request.HasFormContentType) { - return CreateValueProviderAsync(request); + // Allocating a Task only when the body is form data. + return AddValueProviderAsync(context); } - return TaskCache.DefaultCompletedTask; + return TaskCache.CompletedTask; } - private static async Task 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, await GetValueCollectionAsync(request), CultureInfo.CurrentCulture); + + context.ValueProviders.Add(valueProvider); } private static async Task> GetValueCollectionAsync(HttpRequest request) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/DefaultModelMetadata.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/DefaultModelMetadata.cs index 84b146f45e..b36238d310 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/DefaultModelMetadata.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/DefaultModelMetadata.cs @@ -82,7 +82,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata if (_details.BindingMetadata == null) { var context = new BindingMetadataProviderContext(Identity, _details.ModelAttributes); - _detailsProvider.GetBindingMetadata(context); + _detailsProvider.CreateBindingMetadata(context); _details.BindingMetadata = context.BindingMetadata; } @@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata if (_details.DisplayMetadata == null) { var context = new DisplayMetadataProviderContext(Identity, _details.ModelAttributes); - _detailsProvider.GetDisplayMetadata(context); + _detailsProvider.CreateDisplayMetadata(context); _details.DisplayMetadata = context.DisplayMetadata; } @@ -124,7 +124,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata if (_details.ValidationMetadata == null) { var context = new ValidationMetadataProviderContext(Identity, _details.ModelAttributes); - _detailsProvider.GetValidationMetadata(context); + _detailsProvider.CreateValidationMetadata(context); _details.ValidationMetadata = context.ValidationMetadata; } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IBindingMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IBindingMetadataProvider.cs index f628369272..654784db5f 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IBindingMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IBindingMetadataProvider.cs @@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata public interface IBindingMetadataProvider : IMetadataDetailsProvider { /// - /// Gets the values for properties of . + /// Sets the values for properties of . /// /// The . - void GetBindingMetadata(BindingMetadataProviderContext context); + void CreateBindingMetadata(BindingMetadataProviderContext context); } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IDisplayMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IDisplayMetadataProvider.cs index b498e8c19b..a6e063da2a 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IDisplayMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IDisplayMetadataProvider.cs @@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata public interface IDisplayMetadataProvider : IMetadataDetailsProvider { /// - /// Gets the values for properties of . + /// Sets the values for properties of . /// /// The . - void GetDisplayMetadata(DisplayMetadataProviderContext context); + void CreateDisplayMetadata(DisplayMetadataProviderContext context); } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IValidationMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IValidationMetadataProvider.cs index 2728baa219..557ccc8c7b 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IValidationMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Metadata/IValidationMetadataProvider.cs @@ -12,6 +12,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// Gets the values for properties of . /// /// The . - void GetValidationMetadata(ValidationMetadataProviderContext context); + void CreateValidationMetadata(ValidationMetadataProviderContext context); } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/QueryStringValueProviderFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/QueryStringValueProviderFactory.cs index 17d869dc47..bc109bcb30 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/QueryStringValueProviderFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/QueryStringValueProviderFactory.cs @@ -4,6 +4,7 @@ using System; using System.Globalization; using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.Internal; namespace Microsoft.AspNetCore.Mvc.ModelBinding { @@ -14,17 +15,21 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public class QueryStringValueProviderFactory : IValueProviderFactory { /// - public Task GetValueProviderAsync(ActionContext context) + public Task CreateValueProviderAsync(ValueProviderFactoryContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } - return Task.FromResult(new QueryStringValueProvider( + var valueProvider = new QueryStringValueProvider( BindingSource.Query, - context.HttpContext.Request.Query, - CultureInfo.InvariantCulture)); + context.ActionContext.HttpContext.Request.Query, + CultureInfo.InvariantCulture); + + context.ValueProviders.Add(valueProvider); + + return TaskCache.CompletedTask; } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs index b16cf4eae1..cb1cdb4552 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/RouteValueProviderFactory.cs @@ -3,6 +3,7 @@ using System; using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.Internal; namespace Microsoft.AspNetCore.Mvc.ModelBinding { @@ -12,16 +13,20 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public class RouteValueProviderFactory : IValueProviderFactory { /// - public Task GetValueProviderAsync(ActionContext context) + public Task CreateValueProviderAsync(ValueProviderFactoryContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } - return Task.FromResult(new RouteValueProvider( + var valueProvider = new RouteValueProvider( BindingSource.Path, - context.RouteData.Values)); + context.ActionContext.RouteData.Values); + + context.ValueProviders.Add(valueProvider); + + return TaskCache.CompletedTask; } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeClientModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeClientModelValidatorProvider.cs index 9913d4d4f5..e485b10ef0 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeClientModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeClientModelValidatorProvider.cs @@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public IReadOnlyList ValidatorProviders { get; } /// - public void GetValidators(ClientValidatorProviderContext context) + public void CreateValidators(ClientValidatorProviderContext context) { if (context == null) { @@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation // Perf: Avoid allocations for (var i = 0; i < ValidatorProviders.Count; i++) { - ValidatorProviders[i].GetValidators(context); + ValidatorProviders[i].CreateValidators(context); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeModelValidatorProvider.cs index 60162ca610..4fb2d86be3 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/CompositeModelValidatorProvider.cs @@ -33,12 +33,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public IList ValidatorProviders { get; } /// - public void GetValidators(ModelValidatorProviderContext context) + public void CreateValidators(ModelValidatorProviderContext context) { // Perf: Avoid allocations for (var i = 0; i < ValidatorProviders.Count; i++) { - ValidatorProviders[i].GetValidators(context); + ValidatorProviders[i].CreateValidators(context); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs index 312f452851..62799061cf 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs @@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public string FullTypeName { get; } /// - public void GetValidationMetadata(ValidationMetadataProviderContext context) + public void CreateValidationMetadata(ValidationMetadataProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsClientModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsClientModelValidatorProvider.cs index 6a268e72c8..f68f8a120f 100644 --- a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsClientModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsClientModelValidatorProvider.cs @@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } /// - public void GetValidators(ClientValidatorProviderContext context) + public void CreateValidators(ClientValidatorProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsMetadataProvider.cs index 65ad0f789e..44503ed7b7 100644 --- a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsMetadataProvider.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal IValidationMetadataProvider { /// - public void GetBindingMetadata(BindingMetadataProviderContext context) + public void CreateBindingMetadata(BindingMetadataProviderContext context) { if (context == null) { @@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } /// - public void GetDisplayMetadata(DisplayMetadataProviderContext context) + public void CreateDisplayMetadata(DisplayMetadataProviderContext context) { if (context == null) { @@ -219,7 +219,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } /// - public void GetValidationMetadata(ValidationMetadataProviderContext context) + public void CreateValidationMetadata(ValidationMetadataProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsModelValidatorProvider.cs index a6500cf2e8..2444b81938 100644 --- a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DataAnnotationsModelValidatorProvider.cs @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal _stringLocalizerFactory = stringLocalizerFactory; } - public void GetValidators(ModelValidatorProviderContext context) + public void CreateValidators(ModelValidatorProviderContext context) { IStringLocalizer stringLocalizer = null; if (_stringLocalizerFactory != null && _options.Value.DataAnnotationLocalizerProvider != null) diff --git a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DefaultClientModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DefaultClientModelValidatorProvider.cs index d6ee268e8d..2fb0fe4769 100644 --- a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DefaultClientModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/DefaultClientModelValidatorProvider.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal public class DefaultClientModelValidatorProvider : IClientModelValidatorProvider { /// - public void GetValidators(ClientValidatorProviderContext context) + public void CreateValidators(ClientValidatorProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/NumericClientModelValidatorProvider.cs b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/NumericClientModelValidatorProvider.cs index 31c62a3100..a2e182d381 100644 --- a/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/NumericClientModelValidatorProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Internal/NumericClientModelValidatorProvider.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal public class NumericClientModelValidatorProvider : IClientModelValidatorProvider { /// - public void GetValidators(ClientValidatorProviderContext context) + public void CreateValidators(ClientValidatorProviderContext context) { if (context == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/ModelBinding/DataMemberRequiredBindingMetadataProvider.cs b/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/ModelBinding/DataMemberRequiredBindingMetadataProvider.cs index 75dcd8c185..d1c6002158 100644 --- a/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/ModelBinding/DataMemberRequiredBindingMetadataProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/ModelBinding/DataMemberRequiredBindingMetadataProvider.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata public class DataMemberRequiredBindingMetadataProvider : IBindingMetadataProvider { /// - public void GetBindingMetadata(BindingMetadataProviderContext context) + public void CreateBindingMetadata(BindingMetadataProviderContext context) { if (context == null) { diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs index 6584fe2068..8551781d81 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs @@ -1509,7 +1509,7 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test validator1.Validator = validator.Object; var provider = new Mock(); - provider.Setup(v => v.GetValidators(It.IsAny())) + provider.Setup(v => v.CreateValidators(It.IsAny())) .Callback(c => c.Results.Add(validator1)); var binder = new StubModelBinder(); @@ -1546,7 +1546,7 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test validator1.Validator = validator.Object; var provider = new Mock(); - provider.Setup(v => v.GetValidators(It.IsAny())) + provider.Setup(v => v.CreateValidators(It.IsAny())) .Callback(c => c.Results.Add(validator1)); var binder = new StubModelBinder(); diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ClientValidatorCacheTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ClientValidatorCacheTest.cs index 0334a69858..584befa1da 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ClientValidatorCacheTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ClientValidatorCacheTest.cs @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal private class ProviderWithNonReusableValidators : IClientModelValidatorProvider { - public void GetValidators(ClientValidatorProviderContext context) + public void CreateValidators(ClientValidatorProviderContext context) { for (var i = 0; i < context.Results.Count; i++) { diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultBindingMetadataProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultBindingMetadataProviderTest.cs index 4390a3f99c..c6396828d4 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultBindingMetadataProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultBindingMetadataProviderTest.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal public class DefaultModelMetadataBindingDetailsProviderTest { [Fact] - public void GetBindingDetails_FindsBinderTypeProvider() + public void CreateBindingDetails_FindsBinderTypeProvider() { // Arrange var attributes = new object[] @@ -27,14 +27,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(typeof(HeaderModelBinder), context.BindingMetadata.BinderType); } [Fact] - public void GetBindingDetails_FindsBinderTypeProvider_IfNullFallsBack() + public void CreateBindingDetails_FindsBinderTypeProvider_IfNullFallsBack() { // Arrange var attributes = new object[] @@ -51,14 +51,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(typeof(HeaderModelBinder), context.BindingMetadata.BinderType); } [Fact] - public void GetBindingDetails_FindsModelName() + public void CreateBindingDetails_FindsModelName() { // Arrange var attributes = new object[] @@ -74,14 +74,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal("Product", context.BindingMetadata.BinderModelName); } [Fact] - public void GetBindingDetails_FindsModelName_IfNullFallsBack() + public void CreateBindingDetails_FindsModelName_IfNullFallsBack() { // Arrange var attributes = new object[] @@ -98,14 +98,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal("Product", context.BindingMetadata.BinderModelName); } [Fact] - public void GetBindingDetails_FindsBindingSource() + public void CreateBindingDetails_FindsBindingSource() { // Arrange var attributes = new object[] @@ -121,14 +121,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(BindingSource.Body, context.BindingMetadata.BindingSource); } [Fact] - public void GetBindingDetails_FindsBindingSource_IfNullFallsBack() + public void CreateBindingDetails_FindsBindingSource_IfNullFallsBack() { // Arrange var attributes = new object[] @@ -145,14 +145,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(BindingSource.Body, context.BindingMetadata.BindingSource); } [Fact] - public void GetBindingDetails_FindsBindingBehaviorNever_OnProperty() + public void CreateBindingDetails_FindsBindingBehaviorNever_OnProperty() { // Arrange var propertyAttributes = new object[] @@ -167,7 +167,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.False(context.BindingMetadata.IsBindingAllowed); @@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindNever_OnProperty() + public void CreateBindingDetails_FindsBindNever_OnProperty() { // Arrange var propertyAttributes = new object[] @@ -190,7 +190,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.False(context.BindingMetadata.IsBindingAllowed); @@ -198,7 +198,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindingBehaviorOptional_OnProperty() + public void CreateBindingDetails_FindsBindingBehaviorOptional_OnProperty() { // Arrange var propertyAttributes = new object[] @@ -213,7 +213,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -221,7 +221,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindingBehaviorRequired_OnProperty() + public void CreateBindingDetails_FindsBindingBehaviorRequired_OnProperty() { // Arrange var propertyAttributes = new object[] @@ -236,7 +236,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -244,7 +244,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindRequired_OnProperty() + public void CreateBindingDetails_FindsBindRequired_OnProperty() { // Arrange var propertyAttributes = new object[] @@ -259,7 +259,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert 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 // of ordering. [Fact] - public void GetBindingDetails_UsesFirstAttribute() + public void CreateBindingDetails_UsesFirstAttribute() { // Arrange var propertyAttributes = new object[] @@ -285,7 +285,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -293,7 +293,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindRequired_OnContainerClass() + public void CreateBindingDetails_FindsBindRequired_OnContainerClass() { // Arrange var context = new BindingMetadataProviderContext( @@ -303,7 +303,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -311,7 +311,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindNever_OnContainerClass() + public void CreateBindingDetails_FindsBindNever_OnContainerClass() { // Arrange var context = new BindingMetadataProviderContext( @@ -321,7 +321,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.False(context.BindingMetadata.IsBindingAllowed); @@ -329,7 +329,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_FindsBindNever_OnBaseClass() + public void CreateBindingDetails_FindsBindNever_OnBaseClass() { // Arrange var context = new BindingMetadataProviderContext( @@ -339,7 +339,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.False(context.BindingMetadata.IsBindingAllowed); @@ -347,7 +347,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_OverrideBehaviorOnClass_OverrideWithOptional() + public void CreateBindingDetails_OverrideBehaviorOnClass_OverrideWithOptional() { // Arrange var propertyAttributes = new object[] @@ -362,7 +362,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -370,7 +370,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_OverrideBehaviorOnClass_OverrideWithRequired() + public void CreateBindingDetails_OverrideBehaviorOnClass_OverrideWithRequired() { // Arrange var propertyAttributes = new object[] @@ -385,7 +385,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_OverrideInheritedBehaviorOnClass_OverrideWithRequired() + public void CreateBindingDetails_OverrideInheritedBehaviorOnClass_OverrideWithRequired() { // Arrange var propertyAttributes = new object[] @@ -408,7 +408,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -416,7 +416,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetBindingDetails_OverrideBehaviorOnClass_OverrideWithNever() + public void CreateBindingDetails_OverrideBehaviorOnClass_OverrideWithNever() { // Arrange var propertyAttributes = new object[] @@ -431,7 +431,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert 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. [Fact] - public void GetBindingDetails_OverrideBehaviorOnBaseClass_OverrideWithRequired_OnClass() + public void CreateBindingDetails_OverrideBehaviorOnBaseClass_OverrideWithRequired_OnClass() { // Arrange var context = new BindingMetadataProviderContext( @@ -450,7 +450,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingAllowed); @@ -460,7 +460,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal [Theory] [InlineData(true)] [InlineData(false)] - public void GetBindingDetails_BindingBehaviorLeftAlone_ForTypeMetadata(bool initialValue) + public void CreateBindingDetails_BindingBehaviorLeftAlone_ForTypeMetadata(bool initialValue) { // Arrange var attributes = new object[] @@ -479,7 +479,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingAllowed); @@ -491,7 +491,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal [Theory] [InlineData(true)] [InlineData(false)] - public void GetBindingDetails_BindingBehaviorLeftAlone_ForAttributeOnPropertyType(bool initialValue) + public void CreateBindingDetails_BindingBehaviorLeftAlone_ForAttributeOnPropertyType(bool initialValue) { // Arrange var typeAttributes = new object[] @@ -510,7 +510,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var provider = new DefaultBindingMetadataProvider(CreateMessageProvider()); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingAllowed); diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultModelValidatorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultModelValidatorProviderTest.cs index 65a95caca5..680d46ff30 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultModelValidatorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultModelValidatorProviderTest.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal public class DefaultModelValidatorProviderTest { [Fact] - public void GetValidators_ForIValidatableObject() + public void CreateValidators_ForIValidatableObject() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetValidators_ModelValidatorAttributeOnClass() + public void CreateValidators_ModelValidatorAttributeOnClass() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetValidators_ModelValidatorAttributeOnProperty() + public void CreateValidators_ModelValidatorAttributeOnProperty() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetValidators_ModelValidatorAttributeOnPropertyAndClass() + public void CreateValidators_ModelValidatorAttributeOnPropertyAndClass() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -101,7 +101,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetValidators_FromModelMetadataType_SingleValidator() + public void CreateValidators_FromModelMetadataType_SingleValidator() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -123,7 +123,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal } [Fact] - public void GetValidators_FromModelMetadataType_MergedValidators() + public void CreateValidators_FromModelMetadataType_MergedValidators() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ValidatorCacheTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ValidatorCacheTest.cs index d4db82ff85..27cf152c97 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ValidatorCacheTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/ValidatorCacheTest.cs @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal private class ProviderWithNonReusableValidators : IModelValidatorProvider { - public void GetValidators(ModelValidatorProviderContext context) + public void CreateValidators(ModelValidatorProviderContext context) { for (var i = 0; i < context.Results.Count; i++) { diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormValueProviderFactoryTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormValueProviderFactoryTest.cs index fac74737e2..2509a869a1 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormValueProviderFactoryTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormValueProviderFactoryTest.cs @@ -23,10 +23,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test var factory = new FormValueProviderFactory(); // Act - var result = await factory.GetValueProviderAsync(context); + await factory.CreateValueProviderAsync(context); // Assert - Assert.Null(result); + Assert.Empty(context.ValueProviders); } [Theory] @@ -41,14 +41,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test var factory = new FormValueProviderFactory(); // Act - var result = await factory.GetValueProviderAsync(context); + await factory.CreateValueProviderAsync(context); // Assert - var valueProvider = Assert.IsType(result); + var valueProvider = Assert.IsType(Assert.Single(context.ValueProviders)); Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture); } - private static ActionContext CreateContext(string contentType) + private static ValueProviderFactoryContext CreateContext(string contentType) { var context = new DefaultHttpContext(); context.Request.ContentType = contentType; @@ -58,7 +58,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test context.Request.Form = new FormCollection(new Dictionary()); } - return new ActionContext(context, new RouteData(), new ActionDescriptor()); + var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); + + return new ValueProviderFactoryContext(actionContext); } } } diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/JQueryFormValueProviderFactoryTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/JQueryFormValueProviderFactoryTest.cs index 4963a3949b..a71fad4d73 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/JQueryFormValueProviderFactoryTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/JQueryFormValueProviderFactoryTest.cs @@ -47,10 +47,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test var factory = new JQueryFormValueProviderFactory(); // Act - var result = await factory.GetValueProviderAsync(context); + await factory.CreateValueProviderAsync(context); // Assert - Assert.Null(result); + Assert.Empty(context.ValueProviders); } [Theory] @@ -58,17 +58,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test [InlineData("application/x-www-form-urlencoded;charset=utf-8")] [InlineData("multipart/form-data; boundary=----WebKitFormBoundarymx2fSWqWSd0OxQqq")] [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 var context = CreateContext(contentType, formValues: null); var factory = new JQueryFormValueProviderFactory(); // Act - var result = await factory.GetValueProviderAsync(context); + await factory.CreateValueProviderAsync(context); // Assert - var valueProvider = Assert.IsType(result); + var valueProvider = Assert.IsType(Assert.Single(context.ValueProviders)); Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture); } @@ -109,14 +109,15 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test var factory = new JQueryFormValueProviderFactory(); // Act - var valueProvider = await factory.GetValueProviderAsync(context); - var result = valueProvider.GetValue(key); + await factory.CreateValueProviderAsync(context); // Assert + var valueProvider = Assert.Single(context.ValueProviders); + var result = valueProvider.GetValue(key); Assert.Equal("found", (string)result); } - private static ActionContext CreateContext(string contentType, Dictionary formValues) + private static ValueProviderFactoryContext CreateContext(string contentType, Dictionary formValues) { var context = new DefaultHttpContext(); context.Request.ContentType = contentType; @@ -126,7 +127,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test context.Request.Form = new FormCollection(formValues ?? new Dictionary()); } - return new ActionContext(context, new RouteData(), new ActionDescriptor()); + var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); + + return new ValueProviderFactoryContext(actionContext); } } } diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Metadata/DefaultValidationMetadataProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Metadata/DefaultValidationMetadataProviderTest.cs index 19f046d350..475c92f11b 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Metadata/DefaultValidationMetadataProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Metadata/DefaultValidationMetadataProviderTest.cs @@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert 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])); // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata context.ValidationMetadata.ValidatorMetadata.Add(attribute); // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/QueryStringValueProviderFactoryTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/QueryStringValueProviderFactoryTest.cs index 7f13e20698..092bc5c08d 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/QueryStringValueProviderFactoryTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/QueryStringValueProviderFactoryTest.cs @@ -24,13 +24,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test context.SetupGet(c => c.Items).Returns(new Dictionary()); context.SetupGet(c => c.Request).Returns(request.Object); var actionContext = new ActionContext(context.Object, new RouteData(), new ActionDescriptor()); + var factoryContext = new ValueProviderFactoryContext(actionContext); var factory = new QueryStringValueProviderFactory(); // Act - var result = await factory.GetValueProviderAsync(actionContext); + await factory.CreateValueProviderAsync(factoryContext); // Assert - var valueProvider = Assert.IsType(result); + var valueProvider = Assert.IsType(Assert.Single(factoryContext.ValueProviders)); Assert.Equal(CultureInfo.InvariantCulture, valueProvider.Culture); } } diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Validation/CompositeModelValidatorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Validation/CompositeModelValidatorProviderTest.cs index 7080f5e3ad..ed0c1e8811 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Validation/CompositeModelValidatorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/Validation/CompositeModelValidatorProviderTest.cs @@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation var validator3 = new ValidatorItem(validatorMetadata); var provider1 = new Mock(); - provider1.Setup(p => p.GetValidators(It.IsAny())) + provider1.Setup(p => p.CreateValidators(It.IsAny())) .Callback(c => { c.Results.Add(validator1); @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation }); var provider2 = new Mock(); - provider2.Setup(p => p.GetValidators(It.IsAny())) + provider2.Setup(p => p.CreateValidators(It.IsAny())) .Callback(c => { c.Results.Add(validator3); @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation // Act var validatorProviderContext = new ModelValidatorProviderContext(modelMetadata, new List()); - compositeModelValidator.GetValidators(validatorProviderContext); + compositeModelValidator.CreateValidators(validatorProviderContext); // Assert Assert.Equal( diff --git a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsClientModelValidatorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsClientModelValidatorProviderTest.cs index ffdc430fce..d6c2192d2d 100644 --- a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsClientModelValidatorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsClientModelValidatorProviderTest.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal private readonly IModelMetadataProvider _metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); [Fact] - public void GetValidators_AddsRequiredAttribute_ForIsRequiredTrue() + public void CreateValidators_AddsRequiredAttribute_ForIsRequiredTrue() { // Arrange var provider = new DataAnnotationsClientModelValidatorProvider( @@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_DoesNotAddDuplicateRequiredAttribute_ForIsRequiredTrue() + public void CreateValidators_DoesNotAddDuplicateRequiredAttribute_ForIsRequiredTrue() { // Arrange var provider = new DataAnnotationsClientModelValidatorProvider( @@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, items); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); @@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_DoesNotAddRequiredAttribute_ForIsRequiredFalse() + public void CreateValidators_DoesNotAddRequiredAttribute_ForIsRequiredFalse() { // Arrange var provider = new DataAnnotationsClientModelValidatorProvider( @@ -84,14 +84,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert Assert.Empty(providerContext.Results); } [Fact] - public void GetValidators_DoesNotAddExtraRequiredAttribute_IfAttributeIsSpecifiedExplicitly() + public void CreateValidators_DoesNotAddExtraRequiredAttribute_IfAttributeIsSpecifiedExplicitly() { // Arrange var provider = new DataAnnotationsClientModelValidatorProvider( @@ -106,7 +106,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); @@ -127,7 +127,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); diff --git a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsMetadataProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsMetadataProviderTest.cs index 44e5ddc1bd..7786b55ec6 100644 --- a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsMetadataProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsMetadataProviderTest.cs @@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [Theory] [MemberData(nameof(DisplayDetailsData))] - public void GetDisplayMetadata_SimpleAttributes( + public void CreateDisplayMetadata_SimpleAttributes( object attribute, Func accessor, object expected) @@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(new object[] { attribute })); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert var value = accessor(context.DisplayMetadata); @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetDisplayMetadata_FindsDisplayFormat_FromDataType() + public void CreateDisplayMetadata_FindsDisplayFormat_FromDataType() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -85,14 +85,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert Assert.Same(displayFormat.DataFormatString, context.DisplayMetadata.DisplayFormatString); } [Fact] - public void GetDisplayMetadata_FindsDisplayFormat_OverridingDataType() + public void CreateDisplayMetadata_FindsDisplayFormat_OverridingDataType() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -108,14 +108,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert Assert.Same(displayFormat.DataFormatString, context.DisplayMetadata.DisplayFormatString); } [Fact] - public void GetBindingMetadata_EditableAttributeFalse_SetsReadOnlyTrue() + public void CreateBindingMetadata_EditableAttributeFalse_SetsReadOnlyTrue() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -127,14 +127,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsReadOnly); } [Fact] - public void GetBindingMetadata_EditableAttributeTrue_SetsReadOnlyFalse() + public void CreateBindingMetadata_EditableAttributeTrue_SetsReadOnlyFalse() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -146,7 +146,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert 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. [Fact] - public void GetDisplayMetadata_DisplayAttribute_NameFromResources() + public void CreateDisplayMetadata_DisplayAttribute_NameFromResources() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -176,7 +176,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert 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. [Fact] - public void GetDisplayMetadata_DisplayAttribute_DescriptionFromResources() + public void CreateDisplayMetadata_DisplayAttribute_DescriptionFromResources() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -205,7 +205,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert 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(StructWithProperties), false)] - public void GetDisplayMetadata_IsEnum_ReflectsModelType(Type type, bool expectedIsEnum) + public void CreateDisplayMetadata_IsEnum_ReflectsModelType(Type type, bool expectedIsEnum) { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert 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(StructWithProperties), false)] - public void GetDisplayMetadata_IsFlagsEnum_ReflectsModelType(Type type, bool expectedIsFlagsEnum) + public void CreateDisplayMetadata_IsFlagsEnum_ReflectsModelType(Type type, bool expectedIsFlagsEnum) { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -273,7 +273,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert Assert.Equal(expectedIsFlagsEnum, context.DisplayMetadata.IsFlagsEnum); @@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [Theory] [MemberData(nameof(EnumNamesData))] - public void GetDisplayMetadata_EnumNamesAndValues_ReflectsModelType( + public void CreateDisplayMetadata_EnumNamesAndValues_ReflectsModelType( Type type, IReadOnlyDictionary expectedDictionary) { @@ -405,7 +405,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert // This assertion does *not* require entry orders to match. @@ -527,7 +527,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [Theory] [MemberData(nameof(EnumDisplayNamesData))] - public void GetDisplayMetadata_EnumGroupedDisplayNamesAndValues_ReflectsModelType( + public void CreateDisplayMetadata_EnumGroupedDisplayNamesAndValues_ReflectsModelType( Type type, IEnumerable> expectedKeyValuePairs) { @@ -539,7 +539,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new DisplayMetadataProviderContext(key, new ModelAttributes(attributes)); // Act - provider.GetDisplayMetadata(context); + provider.CreateDisplayMetadata(context); // Assert // 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] - public void GetValidationMetadata_RequiredAttribute_SetsIsRequiredToTrue() + public void CreateValidationMetadata_RequiredAttribute_SetsIsRequiredToTrue() { // Arrange 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])); // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert Assert.True(context.ValidationMetadata.IsRequired); @@ -573,7 +573,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [InlineData(true)] [InlineData(false)] [InlineData(null)] - public void GetValidationMetadata_NoRequiredAttribute_IsRequiredLeftAlone(bool? initialValue) + public void CreateValidationMetadata_NoRequiredAttribute_IsRequiredLeftAlone(bool? initialValue) { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -584,7 +584,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.ValidationMetadata.IsRequired = initialValue; // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert Assert.Equal(initialValue, context.ValidationMetadata.IsRequired); @@ -594,7 +594,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [Theory] [InlineData(true)] [InlineData(false)] - public void GetBindingMetadata_RequiredAttribute_IsBindingRequiredLeftAlone(bool initialValue) + public void CreateBindingMetadata_RequiredAttribute_IsBindingRequiredLeftAlone(bool initialValue) { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -605,7 +605,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.BindingMetadata.IsBindingRequired = initialValue; // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); @@ -615,7 +615,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [InlineData(true)] [InlineData(false)] [InlineData(null)] - public void GetBindingDetails_NoEditableAttribute_IsReadOnlyLeftAlone(bool? initialValue) + public void CreateBindingDetails_NoEditableAttribute_IsReadOnlyLeftAlone(bool? initialValue) { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -626,14 +626,14 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.BindingMetadata.IsReadOnly = initialValue; // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsReadOnly); } [Fact] - public void GetValidationDetails_ValidatableObject_ReturnsObject() + public void CreateValidationDetails_ValidatableObject_ReturnsObject() { // Arrange 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])); // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); @@ -652,7 +652,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidationDetails_ValidatableObject_AlreadyInContext_Ignores() + public void CreateValidationDetails_ValidatableObject_AlreadyInContext_Ignores() { // Arrange var provider = new DataAnnotationsMetadataProvider(); @@ -664,7 +664,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.ValidationMetadata.ValidatorMetadata.Add(attribute); // Act - provider.GetValidationMetadata(context); + provider.CreateValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); diff --git a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsModelValidatorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsModelValidatorProviderTest.cs index 06823c9aac..0e75afd73c 100644 --- a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsModelValidatorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataAnnotationsModelValidatorProviderTest.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal private readonly IModelMetadataProvider _metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); [Fact] - public void GetValidators_ReturnsValidatorForIValidatableObject() + public void CreateValidators_ReturnsValidatorForIValidatableObject() { // Arrange var provider = new DataAnnotationsModelValidatorProvider( @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); @@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_InsertsRequiredValidatorsFirst() + public void CreateValidators_InsertsRequiredValidatorsFirst() { var provider = new DataAnnotationsModelValidatorProvider( new ValidationAttributeAdapterProvider(), @@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert Assert.Equal(4, providerContext.Results.Count); @@ -71,7 +71,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = providerContext.Results.Single(); @@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert Assert.Single(providerContext.Results); diff --git a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataMemberRequiredBindingMetadataProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataMemberRequiredBindingMetadataProviderTest.cs index 5706d671c7..10dfc3cbd9 100644 --- a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataMemberRequiredBindingMetadataProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataMemberRequiredBindingMetadataProviderTest.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.True(context.BindingMetadata.IsBindingRequired); @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.BindingMetadata.IsBindingRequired = initialValue; // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.BindingMetadata.IsBindingRequired = initialValue; // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); @@ -104,7 +104,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.BindingMetadata.IsBindingRequired = initialValue; // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); @@ -132,7 +132,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal context.BindingMetadata.IsBindingRequired = initialValue; // Act - provider.GetBindingMetadata(context); + provider.CreateBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); diff --git a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataTypeClientModelValidatorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataTypeClientModelValidatorProviderTest.cs index 44eac852ba..6d606bb739 100644 --- a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataTypeClientModelValidatorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DataTypeClientModelValidatorProviderTest.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [InlineData(typeof(float?))] [InlineData(typeof(double?))] [InlineData(typeof(decimal?))] - public void GetValidators_GetsNumericValidator_ForNumericType(Type modelType) + public void CreateValidators_GetsNumericValidator_ForNumericType(Type modelType) { // Arrange var provider = new NumericClientModelValidatorProvider(); @@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_DoesNotAddDuplicateValidators() + public void CreateValidators_DoesNotAddDuplicateValidators() { // Arrange var provider = new NumericClientModelValidatorProvider(); @@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, items); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert var validatorItem = Assert.Single(providerContext.Results); @@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal [InlineData(typeof(long?))] [InlineData(typeof(string))] [InlineData(typeof(DateTime))] - public void GetValidators_DoesNotGetsNumericValidator_ForUnsupportedTypes(Type modelType) + public void CreateValidators_DoesNotGetsNumericValidator_ForUnsupportedTypes(Type modelType) { // Arrange var provider = new NumericClientModelValidatorProvider(); @@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - provider.GetValidators(providerContext); + provider.CreateValidators(providerContext); // Assert Assert.Empty(providerContext.Results); diff --git a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DefaultModelClientValidatorProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DefaultModelClientValidatorProviderTest.cs index c707f5174a..5ca1d5b1f5 100644 --- a/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DefaultModelClientValidatorProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.DataAnnotations.Test/Internal/DefaultModelClientValidatorProviderTest.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal public class DefaultModelClientValidatorProviderTest { [Fact] - public void GetValidators_ForIValidatableObject() + public void CreateValidators_ForIValidatableObject() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_ClientModelValidatorAttributeOnClass() + public void CreateValidators_ClientModelValidatorAttributeOnClass() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -45,7 +45,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_ClientModelValidatorAttributeOnProperty() + public void CreateValidators_ClientModelValidatorAttributeOnProperty() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_ClientModelValidatorAttributeOnPropertyAndClass() + public void CreateValidators_ClientModelValidatorAttributeOnPropertyAndClass() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert 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. [Fact] - public void GetValidators_ClientValidatorAttribute_SpecificAdapter() + public void CreateValidators_ClientValidatorAttribute_SpecificAdapter() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -114,7 +114,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_ClientValidatorAttribute_DefaultAdapter() + public void CreateValidators_ClientValidatorAttribute_DefaultAdapter() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -137,7 +137,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -146,7 +146,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_FromModelMetadataType_SingleValidator() + public void CreateValidators_FromModelMetadataType_SingleValidator() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -158,7 +158,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; @@ -169,7 +169,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal } [Fact] - public void GetValidators_FromModelMetadataType_MergedValidators() + public void CreateValidators_FromModelMetadataType_MergedValidators() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); @@ -181,7 +181,7 @@ namespace Microsoft.AspNetCore.Mvc.DataAnnotations.Internal var context = new ClientValidatorProviderContext(metadata, GetClientValidatorItems(metadata)); // Act - validatorProvider.GetValidators(context); + validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; diff --git a/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ModelBindingTestHelper.cs b/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ModelBindingTestHelper.cs index 35b7e54bc0..9cd8c5a1af 100644 --- a/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ModelBindingTestHelper.cs +++ b/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ModelBindingTestHelper.cs @@ -93,14 +93,10 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests private static ControllerContext GetControllerContext(MvcOptions options, ActionContext context) { - var valueProviders = new List(); + var valueProviderFactoryContext = new ValueProviderFactoryContext(context); foreach (var factory in options.ValueProviderFactories) { - var valueProvider = factory.GetValueProviderAsync(context).Result; - if (valueProvider != null) - { - valueProviders.Add(valueProvider); - } + factory.CreateValueProviderAsync(valueProviderFactoryContext).GetAwaiter().GetResult(); } return new ControllerContext(context) @@ -108,7 +104,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests InputFormatters = options.InputFormatters, ValidatorProviders = options.ModelValidatorProviders, ModelBinders = options.ModelBinders, - ValueProviders = valueProviders + ValueProviders = valueProviderFactoryContext.ValueProviders }; } } diff --git a/test/Microsoft.AspNetCore.Mvc.TestCommon/TestModelMetadataProvider.cs b/test/Microsoft.AspNetCore.Mvc.TestCommon/TestModelMetadataProvider.cs index 3249a45931..d40cd366a6 100644 --- a/test/Microsoft.AspNetCore.Mvc.TestCommon/TestModelMetadataProvider.cs +++ b/test/Microsoft.AspNetCore.Mvc.TestCommon/TestModelMetadataProvider.cs @@ -127,7 +127,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding { public List Builders { get; } = new List(); - public void GetBindingMetadata(BindingMetadataProviderContext context) + public void CreateBindingMetadata(BindingMetadataProviderContext context) { 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) { @@ -143,7 +143,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } } - public void GetValidationMetadata(ValidationMetadataProviderContext context) + public void CreateValidationMetadata(ValidationMetadataProviderContext context) { foreach (var builder in Builders) {