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