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 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 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 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 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 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 SelectAllProducts() { using (var context = new AutoQueryableDbContext()) { DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext); query.Count().Should().Be(DataInitializer.DefaultToTakeCount); } }
public static void AddDateTimeSeeds(AutoQueryableDbContext dbContext) { dbContext.Product.Add(new Product { Name = "TestIn2010", SellStartDate = new DateTime(2010, DateTime.Today.Month, DateTime.Today.Day) }); dbContext.SaveChanges(); }
public void Configure(IApplicationBuilder app) { // Register the Autofac middleware FIRST. This also adds // Autofac-injected middleware registered with the container. app.UseOwin().UseNancy(); using (var context = new AutoQueryableDbContext()) Seed(context); }
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 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); } }
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 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 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 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 IQueryable GetSwaggerWithoutAqAttr([FromServices] AutoQueryableDbContext context) { return(context.Product.Select(p => new ProductDto { Name = p.Name, Category = new ProductCategoryDto { Name = p.ProductCategory.Name } }).AutoQueryable(_autoQueryableContext)); }
public IQueryable GetWithDtoProjection([FromServices] AutoQueryableDbContext context) { return(context.Product.Select(p => new ProductDto { Name = p.Name, Category = new ProductCategoryDto { Name = p.ProductCategory.Name } })); }
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 FilterWithDecimalPoints_Query_ResultsCountShouldBeOne() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("ListPrice=1.6"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(1); } }
public void ColorEqualsRedOrBlack() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("color=red,black"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(DataInitializer.ProductSampleCount); } }
public void SelectTake50() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("select=ProductId,name,color&take=50"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext); query.Count().Should().Be(50); } }
public void SalesOrderDetailUnitProductIdEquals1() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("SalesOrderDetail.Product.ProductId=1"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(1); } }
public void DateGreaterThanEquals() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString($"SellStartDate>={DateTime.Today.AddHours(8 * 2):o}"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(DataInitializer.ProductSampleCount - 2); } }
public void ProductCateqoryIdEquals1() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("ProductCategory.ProductCategoryId=1"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(DataInitializer.ProductSampleCount / 2); } }
public void NameNotEqualsNull() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("name!=null"); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(DataInitializer.ProductSampleCount / 2); query.Should().OnlyContain(product => product.GetType().GetProperty("Name").GetValue(product) != null); } }
public ProductModule(AutoQueryableDbContext dbContext, IAutoQueryableContext autoQueryableContext, NancyQueryStringAccessor queryStringAccessor, NancyContext nancyContext) : base("/products") { queryStringAccessor.SetQueryString(nancyContext.Request.Url.Query); Get <dynamic>("/", args => Response.AsJson(dbContext.Product.AutoQueryable(autoQueryableContext).ToAutoQueryListResult(autoQueryableContext) as ICollection <object>)); Get <dynamic>("/withfilter", args => { After.AutoQueryable(Context, dbContext.Product, autoQueryableContext); return(""); }); }
public void DisalowFirstClause_QueryWithFirst_ResultsShouldBeEnumerable(string queryString) { using (var context = new AutoQueryableDbContext()) { _profile.DisAllowedClauses = ClauseType.First; _queryStringAccessor.SetQueryString(queryString); DataInitializer.InitializeSeed(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Should().NotBeNullOrEmpty(); } }
public void DateYearShouldNotEqual2011() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("SellStartDate:Year=2011"); DataInitializer.InitializeSeed(context); DataInitializer.AddDateTimeSeeds(context); var query = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; query.Count().Should().Be(0); } }
public void SelectFirst() { using (var context = new AutoQueryableDbContext()) { _queryStringAccessor.SetQueryString("first=true&top=0"); DataInitializer.InitializeSeed(context); var product = context.Product.AutoQueryable(_autoQueryableContext) as IQueryable <object>; var properties = product.GetType().GetProperties(); properties.Should().Contain(p => p.Name == "ProductId"); ((int)properties.First(p => p.Name == "ProductId").GetValue(product)).Should().Be(1); } }
private void Seed(AutoQueryableDbContext context) { var redCategory = new ProductCategory { Name = "red" }; var blackCategory = new ProductCategory { Name = "black" }; var model1 = new ProductModel { Name = "Model 1" }; for (var i = 0; i < 10000; i++) { context.Product.Add(new Product { Color = i % 2 == 0 ? "red" : "black", ProductCategory = i % 2 == 0 ? redCategory : blackCategory, ProductModel = model1, ListPrice = i, Name = $"Product {i}", ProductNumber = Guid.NewGuid().ToString(), Rowguid = Guid.NewGuid(), Size = i % 3 == 0 ? "L" : i % 2 == 0 ? "M" : "S", SellStartDate = DateTime.Today, StandardCost = i + 1, Weight = i % 32, SalesOrderDetail = new List <SalesOrderDetail> { new SalesOrderDetail { LineTotal = i % 54, OrderQty = 5, UnitPrice = i + i, UnitPriceDiscount = i + i / 2 }, new SalesOrderDetail { LineTotal = i + 15 % 64, OrderQty = 3, UnitPrice = i + i, UnitPriceDiscount = i + i / 2 } } }); } context.SaveChanges(); }