public void Apply_GivenPropertyWithObject_ThenNotNull()
        {
            var pipe = new IncludePropertyThenQueryPipe <OrderDetail, Order, Customer>(order => order.Customer, false);

            using var fixture = new NorthwindQueryInMemoryFixture <NoopModelCustomizer>();
            using var context = fixture.CreateContext();

            var queryRoot = context.Set <OrderDetail>().Include(detail => detail.Order);

            var before = queryRoot;

            Assert.NotEmpty(before);
            Assert.All(before, detail =>
            {
                Assert.NotNull(detail.Order);
                Assert.Null(detail.Order.Customer);
            });

            var after = pipe.Apply(queryRoot).ToList();

            Assert.NotEmpty(after);
            Assert.All(after, detail =>
            {
                Assert.NotNull(detail.Order);
                Assert.NotNull(detail.Order.Customer);
            });
        }
        public void Apply_GivenPropertyWithCollection_ThenNotNull()
        {
            var pipe = new IncludePropertyThenQueryPipe <Product, OrderDetail, Order>(detail => detail.Order, true);

            using var fixture = new NorthwindQueryInMemoryFixture <NoopModelCustomizer>();
            using var context = fixture.CreateContext();

            var queryRoot = context.Set <Product>().Include(product => product.OrderDetails);

            var before = queryRoot;

            Assert.NotEmpty(before);
            Assert.All(before, product =>
            {
                Assert.NotNull(product.OrderDetails);
                Assert.All(product.OrderDetails, detail =>
                {
                    Assert.Null(detail.Order);
                });
            });

            var after = pipe.Apply(queryRoot).ToList();

            Assert.NotEmpty(after);
            Assert.All(after, product =>
            {
                Assert.NotNull(product.OrderDetails);
                Assert.All(product.OrderDetails, detail =>
                {
                    Assert.NotNull(detail.Order);
                });
            });
        }
        public void Apply_EnablesChangeTracker()
        {
            var pipe = new AsTrackingQueryPipe <Customer>();

            using var fixture = new NorthwindQueryInMemoryFixture <NoopModelCustomizer>();
            using var context = fixture.CreateContext();

            var results = pipe.Apply(context.Customers).ToList();

            var expectedCount = fixture.QueryAsserter.ExpectedData.Set <Customer>().Count();

            Assert.NotEqual(0, expectedCount);

            Assert.Equal(expectedCount, results.Count);
            Assert.Equal(expectedCount, context.ChangeTracker.Entries().Count());
        }
예제 #4
0
        public void Apply_IgnoresQueryFilter()
        {
            var pipe = new IgnoreQueryFiltersQueryPipe <CustomerQuery>();

            using var fixture = new NorthwindQueryInMemoryFixture <NoopModelCustomizer>();
            using var context = fixture.CreateContext();

            var queryRoot = context.Set <CustomerQuery>();

            var countBefore = queryRoot.Count();

            Assert.NotEqual(0, countBefore);

            var countAfter = pipe.Apply(queryRoot).Count();

            Assert.NotEqual(countBefore, countAfter);
        }
        public void Apply_GivenProperty_ThenNotNull()
        {
            var pipe = new IncludePropertyRootQueryPipe <Order, Customer>(order => order.Customer);

            using var fixture = new NorthwindQueryInMemoryFixture <NoopModelCustomizer>();
            using var context = fixture.CreateContext();

            var queryRoot = context.Set <Order>();

            var before = queryRoot;

            Assert.NotEmpty(before);
            Assert.All(before, order => Assert.Null(order.Customer));

            var after = pipe.Apply(queryRoot).ToList();

            Assert.NotEmpty(after);
            Assert.All(after, order => Assert.NotNull(order.Customer));
        }