示例#1
0
        public void Filter_Order_WhenOrderFilterInputIsNull_ShouldReturnPrimaryQueryable()
        {
            OrderFilterInput filterInput = null;
            var queryable = Mock.QueryableItems.Filter(filterInput);

            Assert.Equal(queryable, Mock.QueryableItems);
        }
示例#2
0
        public void Filter_Order_WhenJustOrderIsPassed_ShouldReturnOrderedQueryable()
        {
            var orderInput = new List <OrderInput>
            {
                new OrderInput
                {
                    Property = "Date",
                    Order    = OrderTypeEnum.Desc
                },
                new OrderInput
                {
                    Property = "Name",
                    Order    = OrderTypeEnum.Desc
                }
            };

            var orderFilterInput = new OrderFilterInput
            {
                Order = orderInput
            };

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

            var normalResult = Mock.QueryableItems
                               .OrderByDescending(p => p.Date)
                               .ThenByDescending(p => p.Name);

            AssertUtil.EnumarableAreEqual(filteredResult, normalResult);
        }
示例#3
0
        public void Filter_Order_WhenJustFilterIsPassed_ShouldReturnFilteredQueryable()
        {
            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 orderFilterInput = new OrderFilterInput
            {
                Filter = filterInput
            };

            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));

            AssertUtil.EnumarableAreEqual(filteredResult, normalResult);
        }
示例#4
0
        public void Filter_Order_WhenOrderFilterInputIsPassed_ShouldReturnFilteredAndOrderedQueryable()
        {
            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 orderInput = new List <OrderInput>
            {
                new OrderInput
                {
                    Property = "Date",
                    Order    = OrderTypeEnum.Desc
                },
                new OrderInput
                {
                    Property = "Name",
                    Order    = OrderTypeEnum.Desc
                }
            };

            var orderFilterInput = new OrderFilterInput
            {
                Order  = orderInput,
                Filter = filterInput
            };

            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.Date)
                               .ThenByDescending(p => p.Name);

            AssertUtil.QueryablesAreEqual(filteredResult, normalResult);
        }
示例#5
0
 public static IOrderedQueryable <T> DynamicQueryNetFilter <T>(this IQueryable <T> input, OrderFilterInput orderFilterInput) => (IOrderedQueryable <T>)((IOrderedQueryable <T>)orderFilterInput != null ? input.DynamicQueryNetFilter(orderFilterInput.Filter).DynamicQueryNetOrder(orderFilterInput.Order) : input);
示例#6
0
 public static IOrderedQueryable <T> Filter <T>(this IQueryable <T> input, OrderFilterInput orderFilterInput)
 {
     return((IOrderedQueryable <T>)(orderFilterInput != null ?
                                    input.Filter(orderFilterInput.Filter).Order(orderFilterInput.Order) : input));
 }