示例#1
0
        public void Filter_Order_Paging_WhenDynamicQueryNetInputIsPassed_ShouldReturnOrderedQueryable()
        {
            var filterInput = new List <FilterInput> {
                new FilterInput
                {
                    Operation = OperationTypeEnum.GreaterThanOrEqual,
                    Property  = "Date",
                    Value     = "2017/04/07",
                    Type      = InputTypeEnum.String
                },
                new FilterInput
                {
                    Operation = OperationTypeEnum.LessThanOrEqual,
                    Property  = "Date",
                    Value     = "2017/04/10",
                    Type      = InputTypeEnum.String
                }
            };


            var nonFilterInput = new Dictionary <string, string>
            {
                { "TestName1", "TestValue1" },
                { "TestName2", "TestValue2" },
                { "TestName3", "TestValue3" }
            };


            var orderInput = new List <OrderInput>
            {
                new OrderInput
                {
                    Property = "Number",
                    Order    = OrderTypeEnum.Desc
                }
            };

            var paging = new PagingInput()
            {
                Page = 2,
                Size = 2
            };

            var orderFilterInput = new DynamicQueryNetInput()
            {
                Order     = orderInput,
                Filter    = filterInput,
                NonFilter = nonFilterInput,
                Paging    = paging
            };

            var filteredResult = Mock.QueryableItems.Filter(orderFilterInput);

            var normalResult = Mock.QueryableItems.Where(p => (string.Compare(p.Date, "2017/04/07") >= 0) &&
                                                         (string.Compare(p.Date, "2017/04/10") <= 0))
                               .OrderByDescending(p => p.Number).Skip(2 * 2).Take(2);

            AssertUtil.EnumarableAreEqual(filteredResult, normalResult);
        }
示例#2
0
        public void Filter_WhenOperationIsContains_ReturnContainedData()
        {
            var filterInput = new List <FilterInput> {
                new FilterInput
                {
                    Operation = OperationTypeEnum.Contain,
                    Property  = "Date",
                    Value     = "10",
                    Type      = InputTypeEnum.String
                }
            };

            var dynamicQueryNetInput = new DynamicQueryNetInput
            {
                Filter = filterInput
            };

            Mock.QueryableItems.Filter(dynamicQueryNetInput);
        }
示例#3
0
        public void Order_Filter_Paging_WhenValueIsOfTypeJValue_ReturnIQueryableWithoutBug()
        {
            var filterInput = new List <FilterInput> {
                new FilterInput
                {
                    Operation = OperationTypeEnum.Equal,
                    Property  = "Number",
                    Value     = new JArray(new[] { 61, 2, 5, 7, 22 }),
                    Type      = InputTypeEnum.Number
                }
            };

            var dynamicQueryNetInput = new DynamicQueryNetInput
            {
                Filter = filterInput
            };

            Mock.QueryableItems.Filter(dynamicQueryNetInput);
        }
示例#4
0
 public static IOrderedQueryable <T> DynamicQueryNetFilter <T>(this IQueryable <T> input, DynamicQueryNetInput dynamicInput) => dynamicInput != null?input.DynamicQueryNetFilter(dynamicInput.Filter).DynamicQueryNetOrder(dynamicInput.Order).DynamicQueryNetPaging(dynamicInput.Paging) : (IOrderedQueryable <T>)input;
示例#5
0
 public static IOrderedQueryable <T> Filter <T>(this IQueryable <T> input, DynamicQueryNetInput dynamicInput)
 {
     return(dynamicInput != null?
            input.Filter(dynamicInput.Filter).Order(dynamicInput.Order).Paging(dynamicInput.Paging)
                : (IOrderedQueryable <T>)input);
 }
示例#6
0
 public IHttpActionResult MultiValueInput(DynamicQueryNetInput input)
 {
     return(Ok(Mock.QueryableItems.Filter(input)));
 }