public void ShouldBePartialContent()
        {
            var fakeCustomers = new Faker <Customer>()
                                .Rules((f, o) => o.Name = f.Name.FullName())
                                .Generate(100)
                                .AsQueryable();


            Helper.Expression <Customer>("name=is-null=false");
            var pageable   = new RSqlPageable <Customer>(0, 10);
            var controller = new MockController();
            var page       = fakeCustomers.Page(pageable);
            var expected   = controller.Page(page);

            expected
            .Should().BeOfType <ObjectResult>();
            ((ObjectResult)expected).StatusCode
            .Should().Be((int)HttpStatusCode.PartialContent);
            ((ObjectResult)expected).Value.As <IRSqlPage <Customer> >()
            .Should().NotBeNull();
            ((IRSqlPage <Customer>)((ObjectResult)expected).Value).Content
            .Count.Should().Be(10);
            ((IRSqlPage <Customer>)((ObjectResult)expected).Value).HasNext
            .Should().BeTrue();
        }
Beispiel #2
0
        public void ShouldBeGetOkResult()
        {
            var data       = Helper.Fake(10);
            var controller = SeTup(data);
            Expression <Func <Customer, bool> > value = customer => customer.Id > 0;
            var actual       = data.ToList();
            var rSqlQuery    = new RSqlQuery <Customer>(value);
            var rSqlPageable = new RSqlPageable <Customer>(0, 10);
            var expected     = controller.Get(rSqlQuery, rSqlPageable);

            // is ObjectResult
            expected
            .Should().BeOfType <ObjectResult>();
            // is partial result
            ((ObjectResult)expected).StatusCode
            .Should().Be((int)HttpStatusCode.OK);
            // value is RSqlPage
            ((ObjectResult)expected).Value
            .As <IRSqlPage <Customer> >()
            .Should().NotBeNull();
            // is valid RSqlPage : first element
            ((RSqlPage <Customer>)((ObjectResult)expected).Value).Content.First()
            .Should().Be(actual.First());
            // is valid RSqlPage : last element
            ((RSqlPage <Customer>)((ObjectResult)expected).Value).Content.Last()
            .Should().Be(actual.Last());
            // is valid RSqlPage : HasNext
            ((RSqlPage <Customer>)((ObjectResult)expected).Value)
            .HasNext.Should().BeFalse();
            // is valid RSqlPage : HasPrevious
            ((RSqlPage <Customer>)((ObjectResult)expected).Value)
            .HasPrevious.Should().BeFalse();
        }
        public void ShouldBeThrowArgumentNullException()
        {
            var fakeCustomers = new Faker <Customer>()
                                .Rules((f, o) => o.Name = f.Name.FullName())
                                .Generate(100)
                                .AsQueryable();

            var pageable   = new RSqlPageable <Customer>(0, 10);
            var controller = new MockController();
            var query      = new RSqlQuery <Customer>(c => c.Name != string.Empty);
            var page       = fakeCustomers.Page(pageable, query);

            // controllerBase is null
            this.Invoking((o) =>
                          ControllerBaseExtensions.Page(
                              null,
                              page))
            .Should()
            .Throw <ArgumentNullException>();

            // page is null
            this.Invoking((o) =>
                          ControllerBaseExtensions.Page <Customer>(controller,
                                                                   null))
            .Should()
            .Throw <ArgumentNullException>();
        }
        public void ShouldBePageWithSortOrderByDescending()
        {
            var customers = new Faker <Customer>()
                            .CustomInstantiator(f => new Customer()
            {
                Id = f.Random.Int(0, 100)
            })
                            .Generate(100).AsQueryable();

            Expression <Func <Customer, object> > a = (c) => c.Id;
            var sort = new RSqlSort <Customer>()
            {
                Value = a, IsDescending = true
            };
            var pageable = new RSqlPageable <Customer>(2, 10, sort);

            var expected = QueryableExtensions.Page(customers, pageable);
            var first    = customers.OrderByDescending(c => c.Id).Skip(20).First();

            expected.Number
            .Should().Be(2);
            expected.HasPrevious
            .Should().BeTrue();
            expected.HasNext
            .Should().BeTrue();
            expected.TotalElements
            .Should().Be(customers.Count());
            expected.TotalPages
            .Should().Be(10);
            expected.Content.First()
            .Should().Be(first);
        }
        public void ShouldBePageWithNoSort()
        {
            var id        = 0;
            var customers = new Faker <Customer>()
                            .CustomInstantiator(f => new Customer()
            {
                Id = id++
            })
                            .Generate(100).AsQueryable();
            var pageable = new RSqlPageable <Customer>(2, 10);
            var query    = new RSqlQuery <Customer>(c => c.Id >= 0);
            var expected = QueryableExtensions.Page(customers, pageable, query);
            var first    = customers.Skip(20).First();

            expected.Number
            .Should().Be(2);
            expected.HasPrevious
            .Should().BeTrue();
            expected.HasNext
            .Should().BeTrue();
            expected.TotalElements
            .Should().Be(customers.Count());
            expected.TotalPages
            .Should().Be(10);
            expected.Content.First()
            .Should().Be(first);
        }
        public void ShouldBeThrowArgumentNullException()
        {
            var pageable  = new RSqlPageable <Customer>(2, 10);
            var customers = new Faker <Customer>().Generate(0).AsQueryable();

            // ArgumentNullException : obj
            this.Invoking(f => { QueryableExtensions.Page(null, pageable); })
            .Should().Throw <ArgumentNullException>();

            // ArgumentNullException : pageable
            this.Invoking(f => { QueryableExtensions.Page(customers, null); })
            .Should().Throw <ArgumentNullException>();
        }
        public void ShouldBePageWithMultiSort()
        {
            var customerId    = 1;
            var customerFaker = new Faker <Customer>()
                                .CustomInstantiator(_ => new Customer {
                Id = customerId++
            })
                                .RuleFor(o => o.BirthDate, f => f.Date.Past(20))
                                .RuleFor(o => o.Company, f => f.Company.CompanyName())
                                .RuleFor(o => o.Email, f => f.Internet.Email())
                                .RuleFor(o => o.Name, f => f.Name.LastName())
                                .RuleFor(o => o.Phone, f => f.Phone.PhoneNumber())
                                .RuleFor(o => o.Username, f => f.Internet.UserNameUnicode())
                                .RuleFor(o => o.Website, f => f.Internet.Url());


            var parameter    = Expression.Parameter(typeof(Customer), "c");
            var nameProperty = Expression.Property(parameter, "Name");
            var expression   = Expression.Convert(nameProperty, typeof(object));
            var lambda       = Expression.Lambda <Func <Customer, object> >(expression, parameter);

            var sort = new RSqlSort <Customer>()
            {
                Value = lambda, IsDescending = true
            };

            nameProperty = Expression.Property(parameter, "BirthDate");
            expression   = Expression.Convert(nameProperty, typeof(object));
            lambda       = Expression.Lambda <Func <Customer, object> >(expression, parameter);
            sort         = new RSqlSort <Customer>()
            {
                Value = lambda, IsDescending = false, Next = sort
            };

            var obj      = customerFaker.Generate(100);
            var pageable = new RSqlPageable <Customer>(0, 100, sort);

            var expected = QueryableExtensions.Page(obj.AsQueryable(), pageable);
            var actual   = obj.AsQueryable().OrderBy(c => c.BirthDate).ThenByDescending(c => c.Name);

            expected.Content.First()
            .Should().Equals(actual.First());

            expected.Content.Last()
            .Should().Equals(actual.Last());
        }
Beispiel #8
0
        public void ShouldBeGetBadResult()
        {
            var          data       = Helper.Fake(10);
            var          controller = SeTup(data);
            const string message1   = "Error 1";
            const string message2   = "Error 2";

            controller.ModelState.AddModelError("1", message1);
            controller.ModelState.AddModelError("2", message2);

            Expression <Func <Customer, bool> > value = customer => customer.Id > 0;
            var rSqlPageable = new RSqlPageable <Customer>(0, 10);
            var rSqlQuery    = new RSqlQuery <Customer>(value);
            var expected     = controller.Get(rSqlQuery, rSqlPageable);

            // is BadRequestResult
            expected
            .Should().BeOfType <BadRequestObjectResult>();
            // is bad request status
            ((BadRequestObjectResult)expected).StatusCode
            .Should().Be((int)HttpStatusCode.BadRequest);
            // is Error Model
            ((BadRequestObjectResult)expected).Value
            .Should().BeOfType <ErrorModel>();

            // contains 2 messages
            ((ErrorModel)((BadRequestObjectResult)expected).Value).Messages.Count
            .Should().Be(2);
            // contains message 1
            ((ErrorModel)((BadRequestObjectResult)expected).Value).Messages
            .Should().Contain(message1);

            // contains message 2
            ((ErrorModel)((BadRequestObjectResult)expected).Value).Messages
            .Should().Contain(message2);
        }