public void GetOrderByCodeTest()
        {
            //Arrange
            var test_order = new Order()
            {
                OrderKey = 1, AccountKey = 1, OrderNumber = "TSTORDER0001"
            };

            test_order.OrderItems.Add(new OrderItem()
            {
                OrderItemKey = 1, OrderKey = 1, OrderItemQuantity = 1, OrderItemLineSum = 30M
            });
            var test_order_data = new OrderHeaderData()
            {
                OrderKey = 1, AccountKey = 1, OrderNum = "TSTORDER0001"
            };
            var test_order_item_data = new OrderItemData()
            {
                OrderKey = 1, OrderItemLineSum = 30M, OrderItemPricePer = 30M, OrderItemQuantity = 1
            };
            Mock <IOrderHeaderRepository> order_repo      = new Mock <IOrderHeaderRepository>();
            Mock <IOrderItemRepository>   order_item_repo = new Mock <IOrderItemRepository>();
            Mock <IOrderEntityService>    order_es        = new Mock <IOrderEntityService>();

            Mock <IOrderBusinessEngine>   order_be     = new Mock <IOrderBusinessEngine>();
            Mock <IDataRepositoryFactory> repo_factory = new Mock <IDataRepositoryFactory>();
            Mock <IBusinessEngineFactory> be_factory   = new Mock <IBusinessEngineFactory>();
            Mock <IEntityServiceFactory>  es_factory   = new Mock <IEntityServiceFactory>();

            Mock <IEmployeeBusinessEngine>    emp_be        = new Mock <IEmployeeBusinessEngine>();
            Mock <IOrderStatusBusinessEngine> ord_status_be = new Mock <IOrderStatusBusinessEngine>();

            order_repo.Setup(mock => mock.GetByCode(It.IsAny <string>(), It.IsAny <string>())).Returns(test_order_data);
            order_be.Setup(mock => mock.GetOrderByCode(It.IsAny <string>(), It.IsAny <string>())).Returns(test_order);
            order_es.Setup(mock => mock.Map(It.IsAny <OrderHeaderData>())).Returns(test_order);
            //order_es.Setup(mock => mock.Map(It.IsAny<OrderItem>())).Returns(test_order_item_data);
            repo_factory.Setup(mock => mock.GetDataRepository <IOrderHeaderRepository>()).Returns(order_repo.Object);
            repo_factory.Setup(mock => mock.GetDataRepository <IOrderItemRepository>()).Returns(order_item_repo.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IOrderBusinessEngine>()).Returns(order_be.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IEmployeeBusinessEngine>()).Returns(emp_be.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IOrderStatusBusinessEngine>()).Returns(ord_status_be.Object);
            es_factory.Setup(mock => mock.GetEntityService <IOrderEntityService>()).Returns(order_es.Object);

            OrderBusinessEngine order_business_engine = new OrderBusinessEngine(repo_factory.Object, be_factory.Object, es_factory.Object);

            //Act
            Order ret_val = order_business_engine.GetOrderByCode("TSTORDER0001", "TEST");

            //Assert
            Assert.IsTrue(ret_val.OrderNumber == test_order.OrderNumber);
        }
        public void OrderSaveTest()
        {
            //Arrange
            var test_order = new Order()
            {
                OrderKey = 1, AccountKey = 1, OrderNumber = "TSTORDER0001"
            };

            test_order.OrderItems.Add(new OrderItem()
            {
                OrderItemKey = 1, OrderKey = 1, OrderItemQuantity = 1, OrderItemLineSum = 30M
            });
            var test_order_data = new OrderHeaderData()
            {
                OrderKey = 1, AccountKey = 1, OrderNum = "TSTORDER0001"
            };
            var test_order_item_data = new OrderItemData()
            {
                OrderKey = 1, OrderItemLineSum = 30M, OrderItemPricePer = 30M, OrderItemQuantity = 1
            };
            var order_repo      = new Mock <IOrderHeaderRepository>();
            var order_item_repo = new Mock <IOrderItemRepository>();
            var order_es        = new Mock <IOrderEntityService>();
            var order_item_es   = new Mock <IOrderItemEntityService>();
            var comment_be      = new Mock <ICommentBusinessEngine>();

            var order_be     = new Mock <IOrderBusinessEngine>();
            var repo_factory = new Mock <IDataRepositoryFactory>();
            var be_factory   = new Mock <IBusinessEngineFactory>();
            var es_factory   = new Mock <IEntityServiceFactory>();

            order_repo.Setup(mock => mock.Save(It.IsAny <OrderHeaderData>())).Returns(1);
            order_be.Setup(mock => mock.OrderSave(It.IsAny <Order>())).Returns(1);
            order_es.Setup(mock => mock.Map(It.IsAny <Order>())).Returns(test_order_data);
            order_es.Setup(mock => mock.Map(It.IsAny <Order>())).Returns(test_order_data);
            order_item_es.Setup(mock => mock.Map(It.IsAny <OrderItem>())).Returns(test_order_item_data);
            repo_factory.Setup(mock => mock.GetDataRepository <IOrderHeaderRepository>()).Returns(order_repo.Object);
            repo_factory.Setup(mock => mock.GetDataRepository <IOrderItemRepository>()).Returns(order_item_repo.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IOrderBusinessEngine>()).Returns(order_be.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <ICommentBusinessEngine>()).Returns(comment_be.Object);
            es_factory.Setup(mock => mock.GetEntityService <IOrderEntityService>()).Returns(order_es.Object);
            es_factory.Setup(mock => mock.GetEntityService <IOrderItemEntityService>()).Returns(order_item_es.Object);

            OrderBusinessEngine account_business_engine = new OrderBusinessEngine(repo_factory.Object, be_factory.Object, es_factory.Object);

            //Act
            int ret_val = account_business_engine.OrderSave(test_order);

            //Assert
            Assert.IsTrue(ret_val == 1);
        }
        public void GetOpenOrdersByAccountTest()
        {
            //Arrange
            List <Order> orders = new List <Order>()
            {
                new Order()
                {
                    OrderKey = 1, AccountKey = 1, OrderNumber = "TSTORDER0001"
                },
                new Order()
                {
                    OrderKey = 2, AccountKey = 1, OrderNumber = "TSTORDER0002"
                },
                new Order()
                {
                    OrderKey = 3, AccountKey = 1, OrderNumber = "TSTORDER0003"
                }
            };
            List <OrderHeaderData> order_headers = new List <OrderHeaderData>()
            {
                new OrderHeaderData()
                {
                    OrderKey = 1, AccountKey = 1, OrderNum = "TSTORDER0001"
                },
                new OrderHeaderData()
                {
                    OrderKey = 2, AccountKey = 1, OrderNum = "TSTORDER0002"
                },
                new OrderHeaderData()
                {
                    OrderKey = 3, AccountKey = 1, OrderNum = "TSTORDER0003"
                }
            };
            AccountData test_acct_data = new AccountData()
            {
                CompanyKey = 1, AccountKey = 1, AccountCode = "TEST"
            };
            Account test_acct = new Account()
            {
                CompanyKey = 1, AccountKey = 1, AccountCode = "TEST"
            };
            var test_order = new Order()
            {
                OrderKey = 1, AccountKey = 1, OrderNumber = "TSTORDER0001"
            };

            test_order.OrderItems.Add(new OrderItem()
            {
                OrderItemKey = 1, OrderKey = 1, OrderItemQuantity = 1, OrderItemLineSum = 30M
            });
            Mock <IOrderHeaderRepository> order_repo      = new Mock <IOrderHeaderRepository>();
            Mock <IOrderItemRepository>   order_item_repo = new Mock <IOrderItemRepository>();
            Mock <IOrderEntityService>    order_es        = new Mock <IOrderEntityService>();

            Mock <IOrderBusinessEngine>   order_be     = new Mock <IOrderBusinessEngine>();
            Mock <IDataRepositoryFactory> repo_factory = new Mock <IDataRepositoryFactory>();
            Mock <IBusinessEngineFactory> be_factory   = new Mock <IBusinessEngineFactory>();
            Mock <IEntityServiceFactory>  es_factory   = new Mock <IEntityServiceFactory>();

            Mock <IEmployeeBusinessEngine>    emp_be        = new Mock <IEmployeeBusinessEngine>();
            Mock <IOrderStatusBusinessEngine> ord_status_be = new Mock <IOrderStatusBusinessEngine>();
            Mock <IAccountBusinessEngine>     account_be    = new Mock <IAccountBusinessEngine>();

            order_repo.Setup(mock => mock.GetAllOpen(It.IsAny <AccountData>())).Returns(order_headers);
            order_be.Setup(mock => mock.GetOpenOrdersByAccount(It.IsAny <Account>())).Returns(orders);
            order_es.Setup(mock => mock.Map(It.IsAny <OrderHeaderData>())).Returns(test_order);
            repo_factory.Setup(mock => mock.GetDataRepository <IOrderHeaderRepository>()).Returns(order_repo.Object);
            repo_factory.Setup(mock => mock.GetDataRepository <IOrderItemRepository>()).Returns(order_item_repo.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IOrderBusinessEngine>()).Returns(order_be.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IEmployeeBusinessEngine>()).Returns(emp_be.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IOrderStatusBusinessEngine>()).Returns(ord_status_be.Object);
            be_factory.Setup(mock => mock.GetBusinessEngine <IAccountBusinessEngine>()).Returns(account_be.Object);
            es_factory.Setup(mock => mock.GetEntityService <IOrderEntityService>()).Returns(order_es.Object);

            OrderBusinessEngine order_business_engine = new OrderBusinessEngine(repo_factory.Object, be_factory.Object, es_factory.Object);

            //Act
            List <Order> ret_val = order_business_engine.GetOpenOrdersByAccount(test_acct);

            //Assert
            Assert.IsTrue(ret_val.Count == 3);
        }