public void ApplyConventions_InvokesPropertyModelConventions() { // Arrange var descriptor = new PageActionDescriptor(); var methodInfo = GetType().GetMethod(nameof(OnGet), BindingFlags.Instance | BindingFlags.NonPublic); var propertyInfo = GetType().GetProperty(nameof(TestProperty), BindingFlags.Instance | BindingFlags.NonPublic); var parameterInfo = methodInfo.GetParameters()[0]; var applicationModel = new PageApplicationModel(descriptor, typeof(object).GetTypeInfo(), Array.Empty <object>()); var handlerModel = new PageHandlerModel(methodInfo, Array.Empty <object>()); var parameterModel = new PageParameterModel(parameterInfo, Array.Empty <object>()); var propertyModelConvention = new Mock <IParameterModelBaseConvention>(); var propertyModel = new PagePropertyModel(propertyInfo, new[] { propertyModelConvention.Object }); applicationModel.HandlerMethods.Add(handlerModel); applicationModel.HandlerProperties.Add(propertyModel); handlerModel.Parameters.Add(parameterModel); propertyModelConvention.Setup(p => p.Apply(It.IsAny <ParameterModelBase>())) .Callback((ParameterModelBase m) => { Assert.Same(propertyModel, m); }) .Verifiable(); var conventionCollection = new PageConventionCollection(); // Act DefaultPageLoader.ApplyConventions(conventionCollection, applicationModel); // Assert propertyModelConvention.Verify(); }
public void ApplyConventions_RemovingParameterModelAsPartOfConventionWorks() { // Arrange var descriptor = new PageActionDescriptor(); var methodInfo = GetType().GetMethod(nameof(OnGet), BindingFlags.Instance | BindingFlags.NonPublic); var parameterInfo = methodInfo.GetParameters()[0]; var applicationModel = new PageApplicationModel(descriptor, typeof(object).GetTypeInfo(), Array.Empty <object>()); var handlerModel = new PageHandlerModel(methodInfo, Array.Empty <object>()); var parameterModelConvention = new Mock <IParameterModelBaseConvention>(); var parameterModel = new PageParameterModel(parameterInfo, new[] { parameterModelConvention.Object }) { Handler = handlerModel, }; applicationModel.HandlerMethods.Add(handlerModel); handlerModel.Parameters.Add(parameterModel); parameterModelConvention.Setup(p => p.Apply(It.IsAny <ParameterModelBase>())) .Callback((ParameterModelBase m) => { var model = Assert.IsType <PageParameterModel>(m); model.Handler.Parameters.Remove(model); }) .Verifiable(); var conventionCollection = new PageConventionCollection(); // Act DefaultPageLoader.ApplyConventions(conventionCollection, applicationModel); // Assert parameterModelConvention.Verify(); }
public void ApplyConventions_InvokesParameterModelConventions_DeclaredGlobally() { // Arrange var descriptor = new PageActionDescriptor(); var methodInfo = GetType().GetMethod(nameof(OnGet), BindingFlags.Instance | BindingFlags.NonPublic); var parameterInfo = methodInfo.GetParameters()[0]; var applicationModel = new PageApplicationModel(descriptor, typeof(object).GetTypeInfo(), Array.Empty <object>()); var handlerModel = new PageHandlerModel(methodInfo, Array.Empty <object>()); var parameterModel = new PageParameterModel(parameterInfo, Array.Empty <object>()); applicationModel.HandlerMethods.Add(handlerModel); handlerModel.Parameters.Add(parameterModel); var parameterModelConvention = new Mock <IParameterModelBaseConvention>(); parameterModelConvention.Setup(p => p.Apply(It.IsAny <ParameterModelBase>())) .Callback((ParameterModelBase m) => { Assert.Same(parameterModel, m); }) .Verifiable(); var conventionCollection = new PageConventionCollection(Mock.Of <IServiceProvider>()) { parameterModelConvention.Object }; // Act CompiledPageActionDescriptorFactory.ApplyConventions(conventionCollection, applicationModel); // Assert parameterModelConvention.Verify(); }
/// <summary> /// Copy constructor. /// </summary> /// <param name="other">The model to copy.</param> public PageParameterModel(PageParameterModel other) : base(other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } Handler = other.Handler; ParameterInfo = other.ParameterInfo; }
public void CreateHandlerMethods_CopiesParameterDescriptorsFromParameterModel() { // Arrange var actionDescriptor = new PageActionDescriptor(); var handlerTypeInfo = typeof(HandlerWithParameters).GetTypeInfo(); var handlerMethod = handlerTypeInfo.GetMethod(nameof(HandlerWithParameters.OnPost)); var parameters = handlerMethod.GetParameters(); var parameterModel1 = new PageParameterModel(parameters[0], new object[0]) { ParameterName = "test-name" }; var parameterModel2 = new PageParameterModel(parameters[1], new object[0]) { BindingInfo = new BindingInfo(), }; var handlerModel = new PageHandlerModel(handlerMethod, new object[0]) { Parameters = { parameterModel1, parameterModel2, } }; var pageApplicationModel = new PageApplicationModel(actionDescriptor, handlerTypeInfo, new object[0]) { HandlerMethods = { handlerModel, } }; // Act var handlerDescriptors = CompiledPageActionDescriptorBuilder.CreateHandlerMethods(pageApplicationModel); // Assert Assert.Collection( Assert.Single(handlerDescriptors).Parameters, p => { Assert.Equal(parameters[0], p.ParameterInfo); Assert.Equal(typeof(string), p.ParameterType); Assert.Equal(parameterModel1.ParameterName, p.Name); }, p => { Assert.Equal(parameters[1], p.ParameterInfo); Assert.Equal(typeof(int), p.ParameterType); Assert.Same(parameterModel2.BindingInfo, p.BindingInfo); }); }
public IQueryable <Object> GetModels([FromUri] PageParameterModel page) { int skip = 0; string strSorting = PageParameterModel.GetSortingString(page, "Name", out skip); var models = (from m in db.Models orderby(strSorting) select new { m.Id, m.Name } ).Skip(skip).Take(page.pageSize); return(models); }
// GET: api/Channels/Model public IQueryable <Object> GetChannels([FromUri] PageParameterModel page) { //int skip = (page.pageNumber - 1) * page.pageSize; //string[] sorting = page.sorting.Split(new char[] { ' ' }); //string sortColumn, sortOrder, strSorting; //sortColumn = sortOrder = strSorting = string.Empty; //if (sorting.Length == 2) { // sortColumn = sorting[0]; // sortOrder = sorting[1].ToLower(); //} //if (new Channel().GetType().GetProperty(sortColumn) == null) sortColumn = "ChannelNo"; //if (sortOrder != "asc" && sortOrder != "desc") sortOrder = "asc"; //strSorting = string.Format("{0} {1}", sortColumn, sortOrder); int skip = 0; string strSorting = PageParameterModel.GetSortingString(page, "ChannelNo", out skip); var channels = (from c in db.Channels orderby(strSorting) select new { c.Id, c.ChannelNo, c.MinRange, c.MaxRange, c.Scale, c.DisplayUnit, c.LowerLimit, c.UpperLimit, c.MonitoringTimer } ).Skip(skip).Take(page.pageSize); return(channels); }