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); }
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); }
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); }
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;
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); }
public IHttpActionResult MultiValueInput(DynamicQueryNetInput input) { return(Ok(Mock.QueryableItems.Filter(input))); }