Exemplo n.º 1
0
        public void Project_Orders_With_Details_Product_Supplier_Custom_Expression()
        {
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>((o, mc) => new OrderDTO {
                Id           = o.Id,
                OrderNo      = o.OrderNo,
                OrderDetails = o.OrderDetails.Select(od => new OrderDetailDTO {
                    Id       = od.Id,
                    Product  = mc.Map <Product, ProductDTO>(od.Product),
                    SubPrice = od.UnitPrice * od.Count
                }).ToList(),
                Price = o.Price
            });
            config.RegisterMap <Product, ProductDTO>();
            config.RegisterMap <Company, CompanyDTO>();

            var query    = _orders.AsQueryable();
            var dtoQuery = config.ProjectTo <Order, OrderDTO>(query, o => o.OrderDetails.Select(od => od.Product).Select(p => p.Supplier));
            var dtoList  = dtoQuery.ToList();

            Assert.Equal(
                dtoList[3].OrderDetails.ToList()[2].Product.Supplier.CompanyName,
                _orders[3].OrderDetails[2].Product.Supplier.CompanyName
                );

            Assert.Null(dtoList[3].OrderDetails.ToList()[2].Product.Supplier.Addresses);
        }
Exemplo n.º 2
0
        public void Project_Orders_Custom_Expression()
        {
            // we aren't registering OrderDetail-OrderDetailDTO because we declare the custom mapping
            // even we don't include OrderDetail in the query, it will be mapped
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>((o, mc) => new OrderDTO {
                Id           = o.Id,
                OrderNo      = o.OrderNo,
                OrderDetails = o.OrderDetails.Select(od => new OrderDetailDTO {
                    Id       = od.Id,
                    Product  = mc.Map <Product, ProductDTO>(od.Product),
                    SubPrice = od.UnitPrice * od.Count
                }).ToList(),
                Price = o.Price
            });

            var query    = _orders.AsQueryable();
            var dtoQuery = config.ProjectTo <OrderDTO>(query, new IncludePath[] { });
            var dtoList  = dtoQuery.ToList();

            Assert.NotNull(dtoList[3].OrderDetails);
            Assert.Equal(dtoList[3].OrderDetails.Count, _orders[3].OrderDetails.Count);
            Assert.True(dtoList.All(o => o.OrderDetails.All(od => od.Product == null)));
        }
Exemplo n.º 3
0
        public void Project_Orders_Custom_Expression2()
        {
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>((o, mc) => new OrderDTO {
                Id      = o.Id,
                OrderNo = o.OrderNo,
                // ReSharper disable once ConvertClosureToMethodGroup
                // it will fail for method group because it must be an "Expression" to be handled
                // mc.Map will be included in the final expression because we are using "Select" for "OrderDetails" navigation
                // using "Select" is equal of saying "always map this property my way"
                // if we want it to be dynamically decided for plural navigations we should have used: "mc.MapToList<OrderDetail, OrderDetailDTO>"
                OrderDetails = o.OrderDetails.Select(od => mc.Map <OrderDetail, OrderDetailDTO>(od)).ToList(),
                Price        = o.Price
            });
            // similar custom mapping. but this time we need to register OrderDetail-OrderDetailDTO to allow MapContext to do the mapping
            config.RegisterMap <OrderDetail, OrderDetailDTO>();

            var query    = _orders.AsQueryable();
            var dtoQuery = config.ProjectTo <OrderDTO>(query, new IncludePath[] { });
            var dtoList  = dtoQuery.ToList();

            Assert.NotNull(dtoList[3].OrderDetails);
            Assert.Equal(dtoList[3].OrderDetails.Count, _orders[3].OrderDetails.Count);
            Assert.True(dtoList.All(o => o.OrderDetails.All(od => od.Product == null)));
        }
Exemplo n.º 4
0
        public void Project_Orders_With_Details_Product_Custom_Expression()
        {
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>((o, mc) => new OrderDTO {
                Id           = o.Id,
                OrderNo      = o.OrderNo,
                OrderDetails = o.OrderDetails.Select(od => new OrderDetailDTO {
                    Id       = od.Id,
                    Product  = mc.Map <Product, ProductDTO>(od.Product),
                    SubPrice = od.UnitPrice * od.Count
                }).ToList(),
                Price = o.Price
            });
            config.RegisterMap <Product, ProductDTO>();
            config.RegisterMap <Company, CompanyDTO>();

            var mockContext      = new Mock <TestEntities>();
            var observableOrders = new ObservableCollection <Order>(_orders);

            mockContext.Setup(p => p.Orders).Returns(GetMockSet(observableOrders).Object);

            var query    = mockContext.Object.Orders;
            var dtoQuery = config.ProjectTo <Order, OrderDTO>(query, o => o.OrderDetails.Select(od => od.Product).Select(p => p.Supplier));
            var dtoList  = dtoQuery.ToList();

            Assert.AreEqual(
                dtoList[3].OrderDetails.ToList()[2].Product.Supplier.CompanyName,
                _orders[3].OrderDetails[2].Product.Supplier.CompanyName
                );
        }
Exemplo n.º 5
0
        public void Project_Orders_Custom_Expression()
        {
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>((o, mc) => new OrderDTO {
                Id           = o.Id,
                OrderNo      = o.OrderNo,
                OrderDetails = o.OrderDetails.Select(od => new OrderDetailDTO {
                    Id       = od.Id,
                    Product  = mc.Map <Product, ProductDTO>(od.Product),
                    SubPrice = od.UnitPrice * od.Count
                }).ToList(),
                Price = o.Price
            });

            var mockContext      = new Mock <TestEntities>();
            var observableOrders = new ObservableCollection <Order>(_orders);

            mockContext.Setup(p => p.Orders).Returns(GetMockSet(observableOrders).Object);

            var query    = mockContext.Object.Orders;
            var dtoQuery = config.ProjectTo <OrderDTO>(query, new IncludePath[] { });
            var dtoList  = dtoQuery.ToList();

            Assert.IsNull(dtoList[3].OrderDetails);
        }
Exemplo n.º 6
0
        public void Project_Orders_Custom_Expression()
        {
            // we aren't registering OrderDetail-OrderDetailDTO because we declare the custom mapping
            // even we don't include OrderDetail in the query, it will be mapped
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>((o, mc) => new OrderDTO {
                Id           = o.Id,
                OrderNo      = o.OrderNo,
                OrderDetails = o.OrderDetails.Select(od => new OrderDetailDTO {
                    Id       = od.Id,
                    Product  = mc.Map <Product, ProductDTO>(od.Product),
                    SubPrice = od.UnitPrice * od.Count
                }).ToList(),
                Price = o.Price
            });

            var mockContext      = new Mock <TestEntities>();
            var observableOrders = new ObservableCollection <Order>(_orders);

            mockContext.Setup(p => p.Orders).Returns(GetMockSet(observableOrders).Object);

            var query    = mockContext.Object.Orders;
            var dtoQuery = config.ProjectTo <OrderDTO>(query, new IncludePath[] { });
            var dtoList  = dtoQuery.ToList();

            Assert.IsNotNull(dtoList[3].OrderDetails);
            Assert.AreEqual(dtoList[3].OrderDetails.Count, _orders[3].OrderDetails.Count);
            Assert.IsTrue(dtoList.All(o => o.OrderDetails.All(od => od.Product == null)));
        }
Exemplo n.º 7
0
        public void Project_Orders_With_Details_Product_Company_2()
        {
            var config = new MapConfiguration(DynamicMapping.MapAndCache);

            var query    = _orders.AsQueryable();
            var dtoQuery = config.ProjectTo <Order, OrderDTO>(query, o => o.OrderDetails.Select(od => od.Product).Select(p => p.Supplier));
            var dtoList  = dtoQuery.ToList();

            Assert.Equal(
                dtoList[3].OrderDetails.ToList()[2].Product.Supplier.CompanyName,
                _orders[3].OrderDetails[2].Product.Supplier.CompanyName
                );
        }
Exemplo n.º 8
0
        public void Project_Orders()
        {
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>();
            config.RegisterMap <OrderDetail, OrderDetailDTO>();
            config.RegisterMap <Product, ProductDTO>();

            var query    = _orders.AsQueryable();
            var dtoQuery = config.ProjectTo <OrderDTO>(query);
            var dtoList  = dtoQuery.ToList();

            Assert.Null(dtoList[3].OrderDetails);
        }
Exemplo n.º 9
0
        public void Project_Orders_With_Details_Product_Company()
        {
            var config = new MapConfiguration(DynamicMapping.MapAndCache);

            var mockContext      = new Mock <TestEntities>();
            var observableOrders = new ObservableCollection <Order>(_orders);

            mockContext.Setup(p => p.Orders).Returns(GetMockSet(observableOrders).Object);

            var query    = mockContext.Object.Orders;
            var dtoQuery = config.ProjectTo <Order, OrderDTO>(query, o => o.OrderDetails.Select(od => od.Product.Supplier));
            var dtoList  = dtoQuery.ToList();

            Assert.AreEqual(
                dtoList[3].OrderDetails.ToList()[2].Product.Supplier.CompanyName,
                _orders[3].OrderDetails[2].Product.Supplier.CompanyName
                );
        }
Exemplo n.º 10
0
        public void Project_Orders()
        {
            var config = new MapConfiguration();

            config.RegisterMap <Order, OrderDTO>();
            config.RegisterMap <OrderDetail, OrderDetailDTO>();
            config.RegisterMap <Product, ProductDTO>();

            var mockContext      = new Mock <TestEntities>();
            var observableOrders = new ObservableCollection <Order>(_orders);

            mockContext.Setup(p => p.Orders).Returns(GetMockSet(observableOrders).Object);

            var query    = mockContext.Object.Orders;
            var dtoQuery = config.ProjectTo <OrderDTO>(query);
            var dtoList  = dtoQuery.ToList();

            Assert.IsNull(dtoList[3].OrderDetails);
        }