public void SelectOrderByColorDesc() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=name,color&orderby=-color&top=0"); DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>).ToList(); var first = query.First(); var second = query.Skip(1).First(); var last = query.Last(); var preLast = query.Skip(DataInitializer.ProductSampleCount - 2).First(); var type = first.GetType(); var firstValue = type.GetProperty("color").GetValue(first).ToString(); var secondValue = type.GetProperty("color").GetValue(second).ToString(); var lastValue = type.GetProperty("color").GetValue(last).ToString(); var preLastValue = type.GetProperty("color").GetValue(preLast).ToString(); firstValue.Should().Be("red"); secondValue.Should().Be("red"); lastValue.Should().Be("black"); preLastValue.Should().Be("black"); } }
public void SelectAllPropertiesWithOneRelation() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=_,ProductModel&top=0"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; var properties = query.First().GetType().GetProperties(); properties.Length.Should().Be(18); properties.Should().Contain(p => p.Name == "ProductId"); properties.Should().Contain(p => p.Name == "Name"); properties.Should().Contain(p => p.Name == "ProductNumber"); properties.Should().Contain(p => p.Name == "Color"); properties.Should().Contain(p => p.Name == "StandardCost"); properties.Should().Contain(p => p.Name == "ListPrice"); properties.Should().Contain(p => p.Name == "Size"); properties.Should().Contain(p => p.Name == "Weight"); properties.Should().Contain(p => p.Name == "ProductCategoryId"); properties.Should().Contain(p => p.Name == "ProductModelId"); properties.Should().Contain(p => p.Name == "SellStartDate"); properties.Should().Contain(p => p.Name == "SellEndDate"); properties.Should().Contain(p => p.Name == "DiscontinuedDate"); properties.Should().Contain(p => p.Name == "ThumbNailPhoto"); properties.Should().Contain(p => p.Name == "ThumbnailPhotoFileName"); properties.Should().Contain(p => p.Name == "Rowguid"); properties.Should().Contain(p => p.Name == "ModifiedDate"); properties.Should().Contain(p => p.Name == "ProductModel"); query.Count().Should().Be(DataInitializer.ProductSampleCount); } }
public void SelectAllProductsWithSelectProjectionWithStarSelection() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("select=name,productcategory.*,productcategory.name") as IQueryable <object>; PropertyInfo[] properties = query.First().GetType().GetProperties(); Assert.AreEqual(properties.Count(), 2); Assert.IsTrue(properties.Any(p => p.Name == "name")); Assert.IsTrue(properties.Any(p => p.Name == "productcategory")); var productcategoryProperty = properties.FirstOrDefault(p => p.Name == "productcategory"); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "name")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "ProductCategoryId")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "Rowguid")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "ModifiedDate")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "ParentProductCategoryId")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "Product")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "ParentProductCategory")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "InverseParentProductCategory")); Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount); } }
public void SelectWithIncludeNavigationProperties() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("top=50&select=name,SalesOrderDetail.Product.ProductId,productcategory"); _profile.UnselectableProperties = new[] { "color" }; DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; var firstResult = query.First(); var properties = firstResult.GetType().GetProperties(); properties.Length.Should().Be(3); properties.Should().Contain(p => p.Name == "name"); properties.Should().Contain(p => p.Name == "SalesOrderDetail").Which.Should().NotBeNull(); properties.Should().Contain(p => p.Name == "productcategory"); var salesOrderDetailProperty = properties.FirstOrDefault(p => p.Name == "SalesOrderDetail").PropertyType .GenericTypeArguments[0]; var productProperty = salesOrderDetailProperty.GetProperties().FirstOrDefault(x => x.Name == "Product"); productProperty.Should().NotBeNull(); productProperty.PropertyType.GetProperties().Should().Contain(x => x.Name == "ProductId"); query.Count().Should().Be(50); } }
public void SelectAllProductsWithDtoProjectionAndSelectProjection() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.Select(p => new ProductDto { Name = p.Name, Category = new ProductCategoryDto { Name = p.ProductCategory.Name } }).AutoQueryable("select=name,category.name") as IQueryable <object>; PropertyInfo[] properties = query.First().GetType().GetProperties(); Assert.AreEqual(properties.Count(), 2); Assert.IsTrue(properties.Any(p => p.Name == "name")); Assert.IsTrue(properties.Any(p => p.Name == "category")); var categoryProperty = properties.FirstOrDefault(p => p.Name == "category"); Assert.IsTrue(categoryProperty.PropertyType.GetProperties().Any(x => x.Name == "name")); Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount); } }
public void SelectOrderByIdDesc() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable("select=productid,name,color&orderbydesc=productid") as IEnumerable <dynamic>).ToList(); var first = query.First(); var second = query.Skip(1).First(); var last = query.Last(); var preLast = query.Skip(DataInitializer.ProductSampleCount - 2).First(); Type type = first.GetType(); int firstValue = type.GetProperty("productid").GetValue(first); int secondValue = type.GetProperty("productid").GetValue(second); int lastValue = type.GetProperty("productid").GetValue(last); int preLastValue = type.GetProperty("productid").GetValue(preLast); Assert.AreEqual(firstValue, DataInitializer.ProductSampleCount); Assert.AreEqual(secondValue, DataInitializer.ProductSampleCount - 1); Assert.AreEqual(lastValue, 1); Assert.AreEqual(preLastValue, 2); } }
public void SelectOrderByColorDesc() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable("select=name,color&orderbydesc=color") as IEnumerable <dynamic>).ToList(); var first = query.First(); var second = query.Skip(1).First(); var last = query.Last(); var preLast = query.Skip(DataInitializer.ProductSampleCount - 2).First(); Type type = first.GetType(); string firstValue = type.GetProperty("color").GetValue(first); string secondValue = type.GetProperty("color").GetValue(second); string lastValue = type.GetProperty("color").GetValue(last); string preLastValue = type.GetProperty("color").GetValue(preLast); Assert.AreEqual(firstValue, "red"); Assert.AreEqual(secondValue, "red"); Assert.AreEqual(lastValue, "black"); Assert.AreEqual(preLastValue, "black"); } }
public void SelectAllProductsWithSelectProjection4() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=name,productcategory.name,ProductCategory.ProductCategoryId,SalesOrderDetail.LineTotal&top=0"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; var properties = query.First().GetType().GetProperties(); properties.Length.Should().Be(3); properties.Should().Contain(p => p.Name == "name"); properties.Should().Contain(p => p.Name == "productcategory"); properties.Should().Contain(p => p.Name == "SalesOrderDetail"); var productcategoryProperty = properties.FirstOrDefault(p => p.Name == "productcategory"); productcategoryProperty.PropertyType.GetProperties().Should().Contain(x => x.Name == "name"); productcategoryProperty.PropertyType.GetProperties().Should() .Contain(x => x.Name == "ProductCategoryId"); var salesOrderDetailProperty = properties.FirstOrDefault(p => p.Name == "SalesOrderDetail").PropertyType .GenericTypeArguments[0]; salesOrderDetailProperty.GetProperties().Should().Contain(x => x.Name == "LineTotal"); query.Count().Should().Be(DataInitializer.ProductSampleCount); } }
public void SelectAllProductsWithDtoProjectionAndSelectProjection() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=name,category.name&top=0"); DataInitializer.InitializeSeed(context); var query = context.Product.Select(p => new ProductDto { Name = p.Name, Category = new ProductCategoryDto { Name = p.ProductCategory.Name } }).AutoQueryable(_autoQueryableContext) as IQueryable <object>; var properties = query.First().GetType().GetProperties(); properties.Length.Should().Be(2); properties.Should().Contain(p => p.Name == "name"); properties.Should().Contain(p => p.Name == "category"); var categoryProperty = properties.FirstOrDefault(p => p.Name == "category"); categoryProperty.PropertyType.GetProperties().Should().Contain(x => x.Name == "name"); query.Count().Should().Be(DataInitializer.ProductSampleCount); } }
public void SelectAllProductsWithSelectProjection4() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("select=name,productcategory.name,ProductCategory.ProductCategoryId,SalesOrderDetail.LineTotal") as IQueryable <object>; PropertyInfo[] properties = query.First().GetType().GetProperties(); Assert.AreEqual(properties.Count(), 3); Assert.IsTrue(properties.Any(p => p.Name == "name")); Assert.IsTrue(properties.Any(p => p.Name == "productcategory")); Assert.IsTrue(properties.Any(p => p.Name == "SalesOrderDetail")); var productcategoryProperty = properties.FirstOrDefault(p => p.Name == "productcategory"); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "name")); Assert.IsTrue(productcategoryProperty.PropertyType.GetProperties().Any(x => x.Name == "ProductCategoryId")); var salesOrderDetailProperty = properties.FirstOrDefault(p => p.Name == "SalesOrderDetail").PropertyType.GenericTypeArguments[0]; Assert.IsTrue(salesOrderDetailProperty.GetProperties().Any(x => x.Name == "LineTotal")); Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount); } }
public void SelectAllProductsWithSelectProjectionWithStarSelection() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=name,productcategory.*,productcategory.name&top=0"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; var properties = query.First().GetType().GetProperties(); properties.Length.Should().Be(2); properties.Should().Contain(p => p.Name == "name"); properties.Should().Contain(p => p.Name == "productcategory"); var productcategoryProperty = properties.FirstOrDefault(p => p.Name == "productcategory"); productcategoryProperty.PropertyType.GetProperties().Should().Contain(p => p.Name == "Name"); productcategoryProperty.PropertyType.GetProperties().Should() .Contain(p => p.Name == "ProductCategoryId"); productcategoryProperty.PropertyType.GetProperties().Should().Contain(p => p.Name == "Rowguid"); productcategoryProperty.PropertyType.GetProperties().Should().Contain(p => p.Name == "ModifiedDate"); productcategoryProperty.PropertyType.GetProperties().Should() .Contain(p => p.Name == "ParentProductCategoryId"); productcategoryProperty.PropertyType.GetProperties().Should().Contain(p => p.Name == "Product"); productcategoryProperty.PropertyType.GetProperties().Should() .Contain(p => p.Name == "ParentProductCategory"); productcategoryProperty.PropertyType.GetProperties().Should() .Contain(p => p.Name == "InverseParentProductCategory"); query.Count().Should().Be(DataInitializer.ProductSampleCount); } }
public void CountAll() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("wrapwith=count") as object; } }
public void SelectAllProducts() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("") as IQueryable <object>; Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount); } }
public void DateGreaterThanEquals() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable($"SellStartDate>={DateTime.Today.AddHours(8 * 2).ToString("o")}") as IEnumerable <dynamic>).ToList(); Assert.AreEqual(DataInitializer.ProductSampleCount - 2, query.Count()); } }
public void SelectTake50() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("select=ProductId,name,color&take=50") as IQueryable <dynamic>; Assert.AreEqual(query.Count(), 50); } }
public void ColorEqualsRed() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable("color=red") as IEnumerable <dynamic>).ToList(); Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount / 2); } }
public void IdEquals3Or4And5Or6() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable("productid=3,4&productid=5,6") as IEnumerable <dynamic>).ToList(); Assert.AreEqual(query.Count(), 0); } }
public void ProductCateqoryIdEquals1() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = (context.Product.AutoQueryable("ProductCategory.ProductCategoryId=1") as IEnumerable <dynamic>).ToList(); Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount / 2); } }
public void CountWithNullForeignKey() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("select=name,productextension.name") as IQueryable <object>; Assert.AreEqual(query.Count(), DataInitializer.ProductSampleCount); } }
public void SelectAllProducts() { using (var context = new AutoQueryableDbContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext); query.Count().Should().Be(DataInitializer.DefaultToTakeCount); } }
public void SalesOrderDetailUnitProductIdEquals1() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable("SalesOrderDetail.Product.ProductId=1") as IEnumerable <dynamic>; Assert.AreEqual(query.Count(), 1); } }
public void WrapWithTotalCount() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); dynamic query = context.Product.AutoQueryable("wrapwith=total-count") as ExpandoObject; var totalCount = query.TotalCount; Assert.AreEqual(totalCount, DataInitializer.ProductSampleCount); } }
public void NextLinkWithSkip() { using (AutoQueryableContext context = new AutoQueryableContext()) { DataInitializer.InitializeSeed(context); dynamic query = context.Product.AutoQueryable("top=20&skip=20&wrapwith=next-link") as ExpandoObject; string nextLink = query.NextLink; Assert.IsTrue(nextLink.Contains("skip=40")); } }
public void CountWithNullForeignKey() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=name,productextension.name&top=0"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext); query?.Count().Should().Be(DataInitializer.ProductSampleCount); } }
public void NullablePropertyEquals() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("name=Product 23"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(1); } }
public void ContainsIgnoreCase() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("namecontains:i=proDuct"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(DataInitializer.ProductSampleCount / 2); } }
public void NotStartsWith() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("nameStartsWith!=Prod"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(DataInitializer.ProductSampleCount / 2); } }
public void CountAll() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("wrapwith=count"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as object; // var t = JsonConvert.SerializeObject(query); } }
public void IdEquals3And4() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("productid=3&productid=4"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(0); } }
public void EndsWithIgnoreCase() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("nameEndsWith:i=cT 999"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(1); } }