Exemple #1
0
        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());
        }
Exemple #2
0
        public JsonResult GetAllWithPagr(PagrModel pagrModel)
        {
            var result = _dbContext.Posts.AsNoTracking();

            result = _pagrProcessor.Apply(pagrModel, result);

            return(Json(result.ToList()));
        }
Exemple #3
0
        public void MethodNotFoundExceptionWork()
        {
            var model = new PagrModel
            {
                Filters = "does not exist",
            };

            Assert.Throws <PagrMethodNotFoundException>(() => _processor.Apply(model, _posts));
        }
Exemple #4
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #11
0
        public void CustomGenericSortsWork()
        {
            var model = new PagrModel
            {
                Sorts = "Oldest",
            };

            var result = _processor.Apply(model, _posts);

            Assert.True(result.Last().Id == 0);
        }
Exemple #12
0
        public void CustomSortsWork()
        {
            var model = new PagrModel
            {
                Sorts = "Popularity",
            };

            var result = _processor.Apply(model, _posts);

            Assert.False(result.First().Id == 0);
        }
Exemple #13
0
        public void ContainsIsCaseSensitive()
        {
            var model = new PagrModel
            {
                Filters = "Title@=a",
            };

            var result = _processor.Apply(model, _posts);

            Assert.True(!result.Any());
        }
Exemple #14
0
        public void CanFilterNullableInts()
        {
            var model = new PagrModel
            {
                Filters = "CategoryId==1"
            };

            var result = _processor.Apply(model, _posts);

            Assert.True(result.Count() == 2);
        }
Exemple #15
0
        public void CanSortBools()
        {
            var model = new PagrModel
            {
                Sorts = "-IsDraft"
            };

            var result = _processor.Apply(model, _posts);

            Assert.Equal(0, result.First().Id);
        }
Exemple #16
0
        public void CanFilterBools()
        {
            var model = new PagrModel
            {
                Filters = "IsDraft==false"
            };

            var result = _processor.Apply(model, _posts);

            Assert.True(result.Count() == 2);
        }
Exemple #17
0
        public void NotContainsWorks()
        {
            var model = new PagrModel
            {
                Filters = "Title!@=D",
            };

            var result = _processor.Apply(model, _posts);

            Assert.True(result.Count() == 3);
        }
Exemple #18
0
        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);
        }
Exemple #19
0
        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));
        }
Exemple #21
0
        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);
        }
Exemple #22
0
        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);
        }
Exemple #23
0
        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);
        }
Exemple #24
0
        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);
        }
Exemple #26
0
        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);
        }
Exemple #28
0
        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);
        }
Exemple #29
0
        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);
        }
Exemple #30
0
        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);
        }