コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
    /// <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;
    }
コード例 #5
0
    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);
        });
    }
コード例 #6
0
        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);
        }
コード例 #7
0
        // 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);
        }