public void CanApplySkipOrderby() { var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel(); var context = new ODataQueryContext(model, typeof(Customer)) { RequestContainer = new MockServiceProvider() }; var orderbyOption = new OrderByQueryOption("Name", context); var skipOption = new SkipQueryOption("1", context); var customers = (new List <Customer> { new Customer { Id = 1, Name = "Andy" }, new Customer { Id = 2, Name = "Aaron" }, new Customer { Id = 3, Name = "Alex" } }).AsQueryable(); IQueryable queryable = orderbyOption.ApplyTo(customers); queryable = skipOption.ApplyTo(queryable, new ODataQuerySettings()); var results = ((IQueryable <Customer>)queryable).ToArray(); Assert.Equal(2, results.Length); Assert.Equal(3, results[0].Id); Assert.Equal(1, results[1].Id); }
public void ApplyInValidSkipQueryThrows(string skipValue) { var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel(); var context = new ODataQueryContext(model, typeof(Customer)); var skip = new SkipQueryOption(skipValue, context); Assert.Throws<ODataException>(() => skip.ApplyTo(ODataQueryOptionTest.Customers)); }
public void ApplyInValidSkipQueryThrows(string skipValue) { var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel(); var context = new ODataQueryContext(model, typeof(Customer)); var skip = new SkipQueryOption(skipValue, context); ExceptionAssert.Throws <ODataException>(() => skip.ApplyTo(ODataQueryOptionTest.Customers, new ODataQuerySettings())); }
public void ApplyTo_WithUnTypedContext_Throws_InvalidOperation() { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataQueryContext context = new ODataQueryContext(model.Model, model.Customer); SkipQueryOption skip = new SkipQueryOption("42", context); IQueryable queryable = new Mock<IQueryable>().Object; // Act & Assert Assert.Throws<NotSupportedException>(() => skip.ApplyTo(queryable, new ODataQuerySettings()), "The query option is not bound to any CLR type. 'ApplyTo' is only supported with a query option bound to a CLR type."); }
public void ApplyTo_WithUnTypedContext_Throws_InvalidOperation() { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataQueryContext context = new ODataQueryContext(model.Model, model.Customer); SkipQueryOption skip = new SkipQueryOption("42", context); IQueryable queryable = new Mock <IQueryable>().Object; // Act & Assert ExceptionAssert.Throws <NotSupportedException>(() => skip.ApplyTo(queryable, new ODataQuerySettings()), "The query option is not bound to any CLR type. 'ApplyTo' is only supported with a query option bound to a CLR type."); }
public async Task SkipQueryOption_SkipNone() { var users = GetUsers(20, 30); var context = GetQueryContext(); var query = new SkipQueryOption("0", context); var settings = new ODataQuerySettings { HandleNullPropagation = HandleNullPropagationOption.True }; var results = query.ApplyTo(users, settings); Assert.AreEqual(10, await results.CountAsync()); Assert.IsTrue(await results.SequenceEqualAsync(users)); }
public void CanApplySkip() { var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel(); var skipOption = new SkipQueryOption("1", new ODataQueryContext(model, typeof(Customer), "Customers")); var customers = (new List<Customer>{ new Customer { CustomerId = 1, Name = "Andy" }, new Customer { CustomerId = 2, Name = "Aaron" }, new Customer { CustomerId = 3, Name = "Alex" } }).AsQueryable(); var results = skipOption.ApplyTo(customers).ToArray(); Assert.Equal(2, results.Length); Assert.Equal(2, results[0].CustomerId); Assert.Equal(3, results[1].CustomerId); }
public async Task SkipQueryOption_SkipAll() { var users = GetUsers(20, 30); var context = GetQueryContext(); var query = new SkipQueryOption("10", context); var settings = new ODataQuerySettings { HandleNullPropagation = HandleNullPropagationOption.True }; var results = query.ApplyTo(users, settings); var expected = AsyncEnumerable.EmptyAsync <UserProfile>(); Assert.AreEqual(0, await results.CountAsync()); Assert.IsTrue(await results.SequenceEqualAsync(expected)); }
public void CanApplySkip() { var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel(); var skipOption = new SkipQueryOption("1", new ODataQueryContext(model, typeof(Customer))); var customers = (new List <Customer> { new Customer { Id = 1, Name = "Andy" }, new Customer { Id = 2, Name = "Aaron" }, new Customer { Id = 3, Name = "Alex" } }).AsQueryable(); var results = skipOption.ApplyTo(customers, new ODataQuerySettings()).ToArray(); Assert.Equal(2, results.Length); Assert.Equal(2, results[0].Id); Assert.Equal(3, results[1].Id); }
public void CanApplySkipTopOrderby() { var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel(); var context = new ODataQueryContext(model, typeof(Customer)); var orderbyOption = new OrderByQueryOption("Name", context, queryTranslator: null); var skipOption = new SkipQueryOption("2", context); var topOption = new TopQueryOption("2", context); var customers = (new List<Customer>{ new Customer { CustomerId = 1, Name = "Andy" }, new Customer { CustomerId = 2, Name = "Aaron" }, new Customer { CustomerId = 3, Name = "Alex" }, new Customer { CustomerId = 4, Name = "Ace" }, new Customer { CustomerId = 5, Name = "Abner" } }).AsQueryable(); IQueryable queryable = orderbyOption.ApplyTo(customers); queryable = skipOption.ApplyTo(queryable, new ODataQuerySettings()); queryable = topOption.ApplyTo(queryable, new ODataQuerySettings()); var results = ((IQueryable<Customer>)queryable).ToArray(); Assert.Equal(2, results.Length); Assert.Equal(4, results[0].CustomerId); Assert.Equal(3, results[1].CustomerId); }