public void FilteringNullsWorks() { var posts = new List <Post> { new Post { Id = 1, Title = null, LikeCount = 0, IsDraft = false, CategoryId = null, TopComment = null, FeaturedComment = null }, }.AsQueryable(); var model = new PagrModel { Filters = "FeaturedComment.Text!@=Some value", }; var result = _processor.Apply(model, posts); Assert.Equal(0, result.Count()); }
public JsonResult GetAllWithPagr(PagrModel pagrModel) { var result = _dbContext.Posts.AsNoTracking(); result = _pagrProcessor.Apply(pagrModel, result); return(Json(result.ToList())); }
public void MethodNotFoundExceptionWork() { var model = new PagrModel { Filters = "does not exist", }; Assert.Throws <PagrMethodNotFoundException>(() => _processor.Apply(model, _posts)); }
public void IncompatibleMethodExceptionsWork() { var model = new PagrModel { Filters = "TestComment", }; Assert.Throws <PagrIncompatibleMethodException>(() => _processor.Apply(model, _posts)); }
public void Filter_NotEquals_Null() { var model = new PagrModel { Filters = "Text!=null" }; var result = _processor.Apply(model, _comments); Assert.Equal(new[] { 0, 1, 2 }, result.Select(p => p.Id)); }
public void Filter_Contains_NullString(string filter) { var model = new PagrModel { Filters = filter }; var result = _processor.Apply(model, _comments); Assert.Equal(new[] { 0, 1 }, result.Select(p => p.Id)); }
public void MultiFilter_Contains_NullString(string filter, params int[] expectedIds) { var model = new PagrModel { Filters = filter }; var result = _processor.Apply(model, _comments); Assert.Equal(expectedIds, result.Select(p => p.Id)); }
public void Filter_Equals_Null() { var model = new PagrModel { Filters = "Text==null" }; var result = _processor.Apply(model, _comments); Assert.Equal(100, result.Single().Id); }
public void CanFilterWithEscapedComma(string filter) { var model = new PagrModel { Filters = filter }; var result = _processor.Apply(model, _comments); Assert.True(result.Count() == 1); }
public void OrValueFilteringWorks2() { var model = new PagrModel { Filters = "Text@=(|)", }; var result = _processor.Apply(model, _comments); Assert.Equal(1, result.Count()); Assert.Equal(2, result.FirstOrDefault()?.Id); }
public void CustomGenericSortsWork() { var model = new PagrModel { Sorts = "Oldest", }; var result = _processor.Apply(model, _posts); Assert.True(result.Last().Id == 0); }
public void CustomSortsWork() { var model = new PagrModel { Sorts = "Popularity", }; var result = _processor.Apply(model, _posts); Assert.False(result.First().Id == 0); }
public void ContainsIsCaseSensitive() { var model = new PagrModel { Filters = "Title@=a", }; var result = _processor.Apply(model, _posts); Assert.True(!result.Any()); }
public void CanFilterNullableInts() { var model = new PagrModel { Filters = "CategoryId==1" }; var result = _processor.Apply(model, _posts); Assert.True(result.Count() == 2); }
public void CanSortBools() { var model = new PagrModel { Sorts = "-IsDraft" }; var result = _processor.Apply(model, _posts); Assert.Equal(0, result.First().Id); }
public void CanFilterBools() { var model = new PagrModel { Filters = "IsDraft==false" }; var result = _processor.Apply(model, _posts); Assert.True(result.Count() == 2); }
public void NotContainsWorks() { var model = new PagrModel { Filters = "Title!@=D", }; var result = _processor.Apply(model, _posts); Assert.True(result.Count() == 3); }
public void NotEqualsCanBeCaseInsensitive() { var model = new PagrModel { Filters = "Title!=*a" }; var result = _processor.Apply(model, _posts); Assert.Equal(1, result.First().Id); Assert.True(result.Count() == 3); }
public void CustomFiltersMixedWithUsualWork2() { var model = new PagrModel { Filters = "CategoryId==2,Isnew", }; var result = _processor.Apply(model, _posts); Assert.True(result.Any(p => p.Id == 3)); Assert.True(result.Count() == 1); }
public void OrValueFilteringWorks() { var model = new PagrModel { Filters = "Title==C|D", }; var result = _processor.Apply(model, _posts); Assert.Equal(2, result.Count()); Assert.True(result.Any(p => p.Id == 2)); Assert.True(result.Any(p => p.Id == 3)); }
public void CustomGenericFiltersWork() { var model = new PagrModel { Filters = "Latest", }; var result = _processor.Apply(model, _comments); Assert.False(result.Any(p => p.Id == 0)); Assert.True(result.Count() == 2); }
public void CustomFiltersWork() { var model = new PagrModel { Filters = "Isnew", }; var result = _processor.Apply(model, _posts); Assert.False(result.Any(p => p.Id == 0)); Assert.True(result.Count() == 3); }
public void CustomFiltersWithOperatorsWork() { var model = new PagrModel { Filters = "HasInTitle==A", }; var result = _processor.Apply(model, _posts); Assert.True(result.Any(p => p.Id == 0)); Assert.True(result.Count() == 1); }
public void MapperWorks() { var model = new PagrModel { Filters = "shortname@=A", }; var result = _processor.Apply(model, _posts); Assert.Equal("A", result.First().ThisHasNoAttributeButIsAccessible); Assert.True(result.Count() == 1); }
public void NestedFilteringWorks() { var model = new PagrModel { Filters = "TopComment.Text!@=A", }; var result = _processor.Apply(model, _posts); Assert.Equal(3, result.Count()); var posts = result.ToList(); Assert.Contains("B", posts[0].TopComment.Text); Assert.Contains("C", posts[1].TopComment.Text); Assert.Contains("D", posts[2].TopComment.Text); }
public void CombinedAndOrFilterIndependentOfOrder(string filter) { var model = new PagrModel { Filters = filter, }; var result = _processor.Apply(model, _posts); var entry = result.FirstOrDefault(); var resultCount = result.Count(); Assert.NotNull(entry); Assert.Equal(1, resultCount); }
public void NestedSortingWorks() { var model = new PagrModel { Sorts = "TopComment.Id", }; var result = _processor.Apply(model, _posts); Assert.Equal(4, result.Count()); var posts = result.ToList(); Assert.Equal(0, posts[0].Id); Assert.Equal(3, posts[1].Id); Assert.Equal(2, posts[2].Id); Assert.Equal(1, posts[3].Id); }
public void CombinedAndOrWithSpaceFilteringWorks() { var model = new PagrModel { Filters = "Title==D, (Title|LikeCount)==3", }; var result = _processor.Apply(model, _posts); var entry = result.FirstOrDefault(); var resultCount = result.Count(); Assert.NotNull(entry); Assert.Equal(1, resultCount); Assert.Equal(3, entry.Id); }
public void MapperSortOnlyWorks() { var model = new PagrModel { Filters = "OnlySortableViaFluentApi@=50", Sorts = "OnlySortableViaFluentApi" }; var result = _processor.Apply(model, _posts, applyFiltering: false, applyPagination: false); Assert.Throws <PagrMethodNotFoundException>(() => _processor.Apply(model, _posts)); Assert.Equal(3, result.First().Id); Assert.True(result.Count() == 3); }
public void EqualsDoesntFailWithNonStringTypes() { var model = new PagrModel { Filters = "LikeCount==50", }; _testOutputHelper.WriteLine(model.GetFiltersParsed()[0].Values.ToString()); _testOutputHelper.WriteLine(model.GetFiltersParsed()[0].Operator); _testOutputHelper.WriteLine(model.GetFiltersParsed()[0].OperatorParsed.ToString()); var result = _processor.Apply(model, _posts); Assert.Equal(1, result.First().Id); Assert.True(result.Count() == 1); }