Пример #1
0
        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");
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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");
            }
        }
Пример #8
0
        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);
            }
        }
Пример #9
0
        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);
            }
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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);
            }
        }
Пример #12
0
 public void CountAll()
 {
     using (AutoQueryableContext context = new AutoQueryableContext())
     {
         DataInitializer.InitializeSeed(context);
         var query = context.Product.AutoQueryable("wrapwith=count") as object;
     }
 }
Пример #13
0
 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);
     }
 }
Пример #14
0
 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());
     }
 }
Пример #15
0
 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);
     }
 }
Пример #16
0
 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);
     }
 }
Пример #17
0
 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);
     }
 }
Пример #18
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);
     }
 }
Пример #19
0
 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);
     }
 }
Пример #20
0
 public void SelectAllProducts()
 {
     using (var context = new AutoQueryableDbContext())
     {
         DataInitializer.InitializeSeed(context);
         var query = context.Product.AutoQueryable(_autoQueryableContext);
         query.Count().Should().Be(DataInitializer.DefaultToTakeCount);
     }
 }
Пример #21
0
 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);
     }
 }
Пример #22
0
 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);
     }
 }
Пример #23
0
 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"));
     }
 }
Пример #24
0
        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);
            }
        }
Пример #25
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);
            }
        }
Пример #26
0
        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);
            }
        }
Пример #27
0
        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);
            }
        }
Пример #28
0
        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);
            }
        }
Пример #29
0
        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);
            }
        }
Пример #30
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);
            }
        }