From 59b7352e8edf17a0f87ae816a767bb9da3366315 Mon Sep 17 00:00:00 2001 From: ianhong Date: Mon, 17 Nov 2014 15:30:55 -0800 Subject: [PATCH] Update per comment --- .../ApplicationModels/ParameterModel.cs | 4 +- ...ControllerActionDescriptorProviderTests.cs | 60 +++++-------------- 2 files changed, 18 insertions(+), 46 deletions(-) diff --git a/src/Microsoft.AspNet.Mvc.Core/ApplicationModels/ParameterModel.cs b/src/Microsoft.AspNet.Mvc.Core/ApplicationModels/ParameterModel.cs index 85520a0545..4753eac379 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ApplicationModels/ParameterModel.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ApplicationModels/ParameterModel.cs @@ -9,8 +9,8 @@ namespace Microsoft.AspNet.Mvc.ApplicationModels { public class ParameterModel { - public ParameterModel(ParameterInfo parameterInfo, - IReadOnlyList attributes) + public ParameterModel([NotNull] ParameterInfo parameterInfo, + [NotNull] IReadOnlyList attributes) { ParameterInfo = parameterInfo; diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ControllerActionDescriptorProviderTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ControllerActionDescriptorProviderTests.cs index f17c6d52da..e4af25eb31 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ControllerActionDescriptorProviderTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ControllerActionDescriptorProviderTests.cs @@ -1137,32 +1137,31 @@ namespace Microsoft.AspNet.Mvc.Test var options = new MockMvcOptionsAccessor(); options.Options.ApplicationModelConventions.Add(applicationConvention.Object); - var provider = GetProvider(typeof(ConventionsController).GetTypeInfo(), options); + var applicationModel = new ApplicationModel(); - var model = provider.BuildModel(); + var controller = new ControllerModel(typeof(ConventionsController).GetTypeInfo(), + new List() { controllerConvention.Object }); + controller.Application = applicationModel; + applicationModel.Controllers.Add(controller); - var controller = model.Controllers.Single(); - model.Controllers.Remove(controller); - controller = BuildControllerModel(controller, controllerConvention.Object); - model.Controllers.Add(controller); + var methodInfo = typeof(ConventionsController).GetMethod("Create"); + var actionModel = new ActionModel(methodInfo, new List() { actionConvention.Object }); + actionModel.Controller = controller; + controller.Actions.Add(actionModel); - var action = controller.Actions.Single(); - controller.Actions.Remove(action); - action = BuildActionModel(action, actionConvention.Object); - controller.Actions.Add(action); - - var parameter = action.Parameters.Single(); - action.Parameters.Remove(parameter); - parameter = BuildParameterModel(parameter, parameterConvention.Object); - action.Parameters.Add(parameter); + var parameterInfo = actionModel.ActionMethod.GetParameters().Single(); + var parameterModel = new ParameterModel(parameterInfo, + new List() { parameterConvention.Object }); + parameterModel.Action = actionModel; + actionModel.Parameters.Add(parameterModel); // Act - ApplicationModelConventions.ApplyConventions(model, options.Options.ApplicationModelConventions); + ApplicationModelConventions.ApplyConventions(applicationModel, options.Options.ApplicationModelConventions); // Assert Assert.Equal(4, sequence); } - + [Fact] public void BuildModel_SplitsConstraintsBasedOnRoute() { @@ -1306,33 +1305,6 @@ namespace Microsoft.AspNet.Mvc.Test Assert.Single(action.ActionConstraints, a => a is ConstraintAttribute); } - private ActionModel BuildActionModel(ActionModel action, IActionModelConvention actionConvention) - { - var t = new ActionModel(action.ActionMethod, - new List(action.Attributes) { actionConvention }); - t.Parameters.AddRange(action.Parameters); - - return t; - } - - private ParameterModel BuildParameterModel(ParameterModel parameter, IParameterModelConvention parameterConvention) - { - var t = new ParameterModel(parameter.ParameterInfo, - new List(parameter.Attributes) { parameterConvention }); - t.Action = parameter.Action; - - return t; - } - - private ControllerModel BuildControllerModel(ControllerModel controller, IControllerModelConvention controllerConvention) - { - var t = new ControllerModel(controller.ControllerType, - new List(controller.Attributes) { controllerConvention }); - t.Actions.AddRange(controller.Actions); - - return t; - } - private ControllerActionDescriptorProvider GetProvider( TypeInfo controllerTypeInfo, IEnumerable filters = null)