Example #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string action = HYRequest.GetQueryString("action");
                if (action == "cancelorder") //取消订单
                {
                    int orderid = HYRequest.GetQueryInt("orderid", 0);
                    OrderFactory.UpdateStatus(99, orderid);
                    Response.Redirect("user_order.aspx");
                }

                int s          = HYRequest.GetQueryInt("s", 0);
                int pageindex  = HYRequest.GetQueryInt("p", 1);
                int pagesize   = 5;
                int totalcount = 0;
                if (s == 0)
                {
                    OrderList = OrderFactory.GetOrderList(pagesize, pageindex, " where uid=" + this.LoginUser.uid + " and orderstatus>1 ", " order by orderid desc ", out totalcount);
                }
                else if (s == 1) //已下单未付款
                {
                    OrderList = OrderFactory.GetOrderList(pagesize, pageindex, " where uid=" + this.LoginUser.uid + " and (orderstatus=2 or orderstatus=3) ", " order by orderid desc ", out totalcount);
                }
                else if (s == 2) //已付款
                {
                    OrderList = OrderFactory.GetOrderList(pagesize, pageindex, " where uid=" + this.LoginUser.uid + " and orderstatus=5 ", " order by orderid desc ", out totalcount);
                }
            }
        }
Example #2
0
        private void orderSaveButton_Click(object sender, EventArgs e)
        {
            try
            {
                ValidateOrderFormInputs();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Warning");
                return;
            }

            Product product = (Product)productsComboBox.SelectedItem;
            Person  person  = (Person)personsComboBox.SelectedItem;
            int     amount  = int.Parse(amountTextBox.Text);



            if (product.StockAmount >= amount)
            {
                Order order = OrderFactory.Create(product, person, amount);
                _orderRepository.Save(order);
                AddOrderToListView(order);

                DecreaseProductStockAmount(order.Product, order.Amount);
                RefreshProductsListView(_productRepository.FindAll());
            }
            else
            {
                MessageBox.Show("Insufficient stock quantity", "Warning");
            }

            ClearOrderInputs();
        }
Example #3
0
    public void Attack(BaseUnitInfo attacker, DetectedUnitInfo attackee, GameConstants.EngagementOrderType engagementOrderType, string weaponClassID, int roundCount)
    {
        if (attacker != null && attackee != null)
        {
            //~ ShowInfo(string.Format("*** Unit {0} to engage target {1}", unit.UnitName, det.DetectedUnitDescription));
            UnitEngagementOrder order = OrderFactory.CreateEngagementOrder(attacker.Id, attackee.Id, weaponClassID, engagementOrderType,
                                                                           GameConstants.EngagementStrength.DefaultAttack, false);
            //order.DetectedUnitId = attackee.Id;
            //order.Id = attacker.Id;
            //if (weaponClassID != null)
            //{
            //    order.WeaponClassID = weaponClassID;
            //}
            //if (roundCount != null && roundCount > 0)
            //{
            //    order.RoundCount = roundCount;
            //}

            //order.EngagementType = engagementOrderType;
            GameManager.Instance.NetworkManager.Send(order);

            GameManager.Instance.MessageManager.AddMessage(string.Format("Attacking {0} with unit {1}", attackee.Id, attacker.Id), GameManager.MessageTypes.Battle, attackee.Position);
        }
        else
        {
            //~ ShowInfo("Select own unit and detected unit to engage.");
        }
    }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jsonToken = JToken.Load(reader);

            if (jsonToken.Type == JTokenType.Array)
            {
                var orders = new List <IOrder>();

                var jsonArray = (JArray)jsonToken;

                foreach (var item in jsonArray)
                {
                    var order = OrderFactory.Create(item["type"].Value <string>());
                    serializer.Populate(item.CreateReader(), order);
                    orders.Add(order);
                }

                return(orders);
            }
            else if (jsonToken.Type == JTokenType.Object)
            {
                IOrder order = OrderFactory.Create(jsonToken["type"].Value <string>());
                serializer.Populate(jsonToken.CreateReader(), order);
                return(order);
            }
            else
            {
                throw new ArgumentException(string.Format("Unexpected JTokenType ({0}) in reader.", jsonToken.Type.ToString()));
            }
        }
        private OrderFactory CreateOrderFactory()
        {
            var factoryLogger = Mock.Of <ILogger <OrderFactory> >();
            var factory       = new OrderFactory(factoryLogger);

            return(factory);
        }
Example #6
0
        public void MappingTest()
        {
            string connectionString = DbTest.CreateEmptyDatabase();

            DbMigrations.Run(connectionString);

            Order o;

            using (OrderContext ctx = new OrderContext(connectionString))
            {
                IOrderRepository orderRepository = new OrderRepository(ctx, new FakeBus());

                o = new OrderFactory(new TestNumberGenerator(), new TestBus()).Create("12", "client123");
                o.AddProduct(TestSeeding.ProductId);

                orderRepository.Save(o);
            }

            using (OrderContext ctx = new OrderContext(connectionString))
            {
                IOrderRepository orderRepository = new OrderRepository(ctx, new FakeBus());

                Order o2 = orderRepository.Get(o.Id);

                Assert.True(o2.SameAs(o));
            }
        }
        public void Remove_Deletes_Article_With_OrderLines()
        {
            //Arrange
            var customer     = CustomerFactory.CreateValidEntity();
            var productToAdd = ProductFactory.CreateValidEntity();
            var article      = ArticleFactory.CreateValidEntity(productToAdd);
            var order        = OrderFactory.CreateValidEntity(customer);
            var orderLine    = OrderLineFactory.CreateValidEntity(order, article);

            article.OrderLines.Add(orderLine);
            productToAdd.Articles.Add(article);

            //Setup ArticleRepository
            var articleRepositoryMock = new Mock <IArticleRepository>();

            articleRepositoryMock.Setup(ir => ir.Get(It.IsAny <Guid>(), It.IsAny <ArticleIncludes>())).Returns(article);
            articleRepositoryMock.Setup(rir => rir.Remove(It.IsAny <Guid>()));

            //Setup UnitOfWork
            var unitOfWorkMock = new Mock <IUnitOfWork>();

            unitOfWorkMock.Setup(uow => uow.Articles).Returns(articleRepositoryMock.Object);
            unitOfWorkMock.Setup(uow => uow.Complete()).Returns(1);

            var articleService = new ArticleService(unitOfWorkMock.Object);

            //Act
            var result = articleService.Remove(productToAdd.Id);

            //Assert
            Assert.IsTrue(result);
        }
        public void CanGetOrderById(int id)
        {
            var order    = new OrderFactory();
            var newOrder = order.get(id);

            Assert.True(newOrder.GetType() == typeof(Order));
        }
Example #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Portfolio"/> class.
        /// </summary>
        /// <param name="clock">The clock.</param>
        /// <param name="actionscheduler">The actionscheduler.</param>
        /// <param name="brokerconnection">The brokerconnection.</param>
        /// <param name="brokermodel">The brokermodel.</param>
        /// <param name="currency">The currency.</param>
        /// <param name="eventrunner">The eventrunner.</param>
        /// <param name="exceptionhandler">The exceptionhandler.</param>
        /// <param name="orderTicketHandler">The order ticket handler.</param>
        /// <param name="brokeraccount">The brokeraccount.</param>
        /// <param name="cashmanager">The cashmanager.</param>
        /// <param name="runmode">The runmode.</param>
        /// <param name="datafeed">The datafeed.</param>
        /// <param name="benchmark">The benchmark.</param>
        /// <param name="id">The identifier.</param>
        public Portfolio(WorldClock clock, ActionsScheduler actionscheduler, BrokerConnection brokerconnection, BrokerModel brokermodel,
                         Currency currency, EventRunner eventrunner, ExceptionHandler exceptionhandler, OrderTicketHandler orderTicketHandler,
                         BrokerAccount brokeraccount, CashManager cashmanager, RunMode runmode, DataFeed datafeed, Benchmark benchmark, string id = "")
        {
            //Set references
            ActionsScheduler   = actionscheduler;
            BrokerAccount      = brokeraccount;
            BrokerConnection   = brokerconnection;
            BrokerModel        = brokermodel;
            Clock              = clock;
            Currency           = currency;
            EventRunner        = eventrunner;
            ExceptionHandler   = exceptionhandler;
            CashManager        = cashmanager;
            OrderTicketHandler = orderTicketHandler;
            _porfolioBenchmark = benchmark;

            //Set initial items
            Id            = id;
            IsBacktesting = runmode == RunMode.Backtester;
            OrderFactory  = new OrderFactory(this, BrokerModel);
            OrderTracker  = new OrderTracker(this);
            Subscription  = new DataSubscriptionManager(datafeed, CashManager);
            Results       = new Result(0, _porfolioBenchmark);

            //Portfolio benchmark is not used
            benchmark.OnCalc(x => 0);
        }
        private void PublishOrdersAfterReplay()
        {
            string currencyPair = "XBTUSD";
            Order  order1       = OrderFactory.CreateOrder("5555", currencyPair, "limit", "buy", 100, 406, new StubbedOrderIdGenerator());

            InputDisruptorPublisher.Publish(InputPayload.CreatePayload(order1));
            Order order2 = OrderFactory.CreateOrder("5555", currencyPair, "limit", "buy", 101, 406, new StubbedOrderIdGenerator());

            InputDisruptorPublisher.Publish(InputPayload.CreatePayload(order2));
            Order order3 = OrderFactory.CreateOrder("5555", currencyPair, "limit", "buy", 102, 405, new StubbedOrderIdGenerator());

            InputDisruptorPublisher.Publish(InputPayload.CreatePayload(order3));
            Order order4 = OrderFactory.CreateOrder("5555", currencyPair, "limit", "sell", 100, 407, new StubbedOrderIdGenerator());

            InputDisruptorPublisher.Publish(InputPayload.CreatePayload(order4));
            Order order5 = OrderFactory.CreateOrder("5555", currencyPair, "limit", "sell", 104, 409, new StubbedOrderIdGenerator());

            InputDisruptorPublisher.Publish(InputPayload.CreatePayload(order5));
            Order order6 = OrderFactory.CreateOrder("5555", currencyPair, "limit", "sell", 104, 413, new StubbedOrderIdGenerator());

            InputDisruptorPublisher.Publish(InputPayload.CreatePayload(order6));
            ManualResetEvent resetEvent = new ManualResetEvent(false);

            resetEvent.WaitOne(10000);
        }
Example #11
0
        public void Add_100_OrderItem()
        {
            var dbContextScopeFactory   = new DbContextScopeFactory();
            var ambientDbContextLocator = new AmbientDbContextLocator();

            var orderFactory = new OrderFactory();

            using (var dbContextScope = dbContextScopeFactory.Create())
            {
                var personRepository = new PersonRepository(ambientDbContextLocator);
                var orderRepository  = new OrderRepository(ambientDbContextLocator);

                var person = personRepository.GetByName("ding.p");
                var order  = orderFactory.CreateOrder(person);
                orderRepository.Add(order);

                for (int i = 0; i < 100; i++)
                {
                    var orderItem = order.CreateItem("A-" + i);

                    order.OrderLine.Add(orderItem);
                }

                dbContextScope.SaveChanges();
            }
        }
        public void FindOrdersMaterializeResultsIfCustomerExist()
        {
            //Arrange
            var customerRepository = new Mock <ICustomerRepository>();
            var productRepository  = new Mock <IProductRepository>();
            var orderRepository    = new Mock <IOrderRepository>();
            Mock <ILogger <SalesAppService> > _mockLogger = new Mock <ILogger <SalesAppService> >();

            orderRepository
            .Setup(x => x.GetFiltered(It.IsAny <Expression <Func <Order, bool> > >()))
            .Returns((Expression <Func <Order, bool> > filter) => {
                var orders   = new List <Order>();
                var customer = new Customer();
                customer.ChangeCurrentIdentity(Guid.NewGuid());
                orders.Add(OrderFactory.CreateOrder(customer, "name", "city", "address", "zipcode"));

                return(orders);
            });


            var salesManagement = new SalesAppService(productRepository.Object, orderRepository.Object, customerRepository.Object, _mockLogger.Object);

            //act
            var result = salesManagement.FindOrders(Guid.NewGuid());


            //Assert
            Assert.NotNull(result);
            Assert.True(result.Count == 1);
        }
Example #13
0
        protected void dgOrderList_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandArgument.ToString() == "OrderChuhuo")  //已送货
            {
                int dataKey = Convert.ToInt32(this.dgOrderList.DataKeys[e.Item.ItemIndex]);

                OrderModel of = OrderFactory.Get(dataKey);
                if (of.deliverstatus == 1)
                {
                    of.deliverstatus = 2;
                    OrderFactory.Update(of);
                }
                this.LoadListData();
            }
            else if (e.CommandArgument.ToString() == "OrderShouhuo")
            {
                int dataKey = Convert.ToInt32(this.dgOrderList.DataKeys[e.Item.ItemIndex]);

                OrderModel of = OrderFactory.Get(dataKey);
                if (of.deliverstatus == 1 || of.deliverstatus == 2)
                {
                    of.deliverstatus = 3;
                    OrderFactory.Update(of);
                }
                this.LoadListData();
            }
        }
        public void OrderRepositoryRemoveItemDeleteIt()
        {
            //Arrange
            var unitOfWork = new MainBcUnitOfWork();

            var customerRepository = new CustomerRepository(unitOfWork);
            var orderRepository    = new OrderRepository(unitOfWork);

            var customer = customerRepository.Get(new Guid("0CD6618A-9C8E-4D79-9C6B-4AA69CF18AE6"));

            var order = OrderFactory.CreateOrder(
                customer,
                "shipping name",
                "shipping city",
                "shipping address",
                "shipping zip code");

            order.GenerateNewIdentity();

            orderRepository.Add(order);
            orderRepository.UnitOfWork.Commit();

            //Act
            orderRepository.Remove(order);
            unitOfWork.Commit();
        }
Example #15
0
        public void OrderFactoryCreateValidOrder()
        {
            //Arrange

            string shippingName    = "shippingName";
            string shippingCity    = "shippingCity";
            string shippingZipCode = "shippingZipCode";
            string shippingAddress = "shippingAddress";

            Customer customer = new Customer();

            customer.GenerateNewIdentity();

            //Act
            Order order             = OrderFactory.CreateOrder(customer, shippingName, shippingCity, shippingAddress, shippingZipCode);
            var   validationContext = new ValidationContext(order, null, null);
            var   validationResult  = order.Validate(validationContext);

            //Assert
            ShippingInfo shippingInfo = new ShippingInfo(shippingName, shippingAddress, shippingCity, shippingZipCode);

            Assert.AreEqual(shippingInfo, order.ShippingInformation);
            Assert.AreEqual(order.Customer, customer);
            Assert.AreEqual(order.CustomerId, customer.Id);
            Assert.IsFalse(order.IsDelivered);
            Assert.IsNull(order.DeliveryDate);
            Assert.IsTrue(order.OrderDate != default(DateTime));
            Assert.IsFalse(validationResult.Any());
        }
Example #16
0
        public void IsCreditValidForOrderReturnFalseIfTotalOrderIsGreaterThanCustomerCredit()
        {
            //Arrange
            string shippingName    = "shippingName";
            string shippingCity    = "shippingCity";
            string shippingZipCode = "shippingZipCode";
            string shippingAddress = "shippingAddress";

            var country = new Country("spain", "es-ES");

            country.GenerateNewIdentity();

            var customer = CustomerFactory.CreateCustomer("jhon", "el rojo", "+3422", "company", country, new Address("city", "zipCode", "address line1", "addres line2"));

            //Act
            Order order = OrderFactory.CreateOrder(customer, shippingName, shippingCity, shippingAddress, shippingZipCode);

            order.AddNewOrderLine(Guid.NewGuid(), 100, 240, 0); // this is greater that 1000 ( default customer credit )

            //assert
            var result = order.IsCreditValidForOrder();

            //Assert
            Assert.IsFalse(result);
        }
Example #17
0
        public void OrderGetTotalOrderSumLines()
        {
            //Arrange
            string shippingName    = "shippingName";
            string shippingCity    = "shippingCity";
            string shippingZipCode = "shippingZipCode";
            string shippingAddress = "shippingAddress";

            Customer customer = new Customer();

            customer.GenerateNewIdentity();

            Order order = OrderFactory.CreateOrder(customer, shippingName, shippingCity, shippingAddress, shippingZipCode);

            order.AddNewOrderLine(Guid.NewGuid(), 1, 500, 10);
            order.AddNewOrderLine(Guid.NewGuid(), 2, 300, 10);

            decimal expected = ((1 * 500) * (1 - (10M / 100M))) + ((2 * 300) * (1 - (10M / 100M)));

            //Act

            decimal actual = order.GetOrderTotal();

            //Assert
            Assert.AreEqual(expected, actual);
        }
Example #18
0
        public void ConcurrencyTest()
        {
            string connectionString = DbTest.CreateEmptyDatabase();

            DbMigrations.Run(connectionString);

            Order        o;
            OrderContext ctx  = new OrderContext(connectionString);
            OrderContext ctx2 = new OrderContext(connectionString);

            IOrderRepository orderRepository  = new OrderRepository(ctx, new FakeBus());
            IOrderRepository orderRepository2 = new OrderRepository(ctx2, new FakeBus());

            o = new OrderFactory(new TestNumberGenerator(), new TestBus()).Create("12", "client123");
            o.AddProduct(TestSeeding.ProductId);

            orderRepository.Save(o);

            Order concurrencyOrder1 = orderRepository.Get(o.Id);
            Order concurrencyOrder2 = orderRepository2.Get(o.Id);

            concurrencyOrder1.AddProduct(TestSeeding.Product2Id);

            concurrencyOrder2.AddProduct(TestSeeding.Product3Id);

            orderRepository.Save(concurrencyOrder1);

            Assert.Throws <DbUpdateConcurrencyException>(() => orderRepository2.Save(concurrencyOrder2));
        }
Example #19
0
        public async Task <ServiceResponse <CustomerOrderListVM> > GetOrdersByCustomerAsync(string customerId)
        {
            var response = new ServiceResponse <CustomerOrderListVM>();

            try
            {
                if (string.IsNullOrWhiteSpace(customerId))
                {
                    response.AddNotification("customerId is required");
                    return(response);
                }

                var customer = await _customerClient.GetCustomerByIdAsync(customerId);

                var orders = await _orderClient.GetOrdersByCustomerAsync(customerId);

                if (customer is null)
                {
                    response.AddNotification($"customer {customerId} not found");
                    return(response);
                }

                response.Data = new CustomerOrderListVM
                {
                    Orders = orders?.Select(p => OrderFactory.Create(p, customer))?.ToList()
                };
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                response.AddNotification("unexpected error");
            }

            return(response);
        }
Example #20
0
        public void CreateOrders_InvalidNumOrders_ThrowsArgumentException(int numOfOrders)
        {
            var logger  = Mock.Of <ILogger <OrderFactory> >();
            var factory = new OrderFactory(logger);

            var exception = Assert.Throws <ArgumentOutOfRangeException>(() => factory.CreateOrders(numOfOrders));
        }
Example #21
0
        private void Setup()
        {
            var partFactory = PartFactoryTestObjects.GetAlwaysValidPartFactory();

            CommandFactory = CommandsTestObjects.GetProperAlwaysValidCommandFactory();
            var idGenerator         = new IdGenerator(4);
            var dataPackFactory     = new ReflectionBasedDataPackFactory();
            var orderFactory        = new OrderFactory(idGenerator, dataPackFactory);
            var replyFactory        = new ReplyFactory(idGenerator);
            var confirmationFactory = new ConfirmationFactory();

            Mock <IDataStreamSplitter>       splitter  = new Mock <IDataStreamSplitter>();
            Mock <ICommunicationDeviceAsync> comDevice = new Mock <ICommunicationDeviceAsync>();
            var translator = new CommandTranslator(new OrderCommandTranslator(partFactory, CommandFactory, orderFactory),
                                                   new ReplyCommandTranslator(partFactory, CommandFactory, replyFactory),
                                                   new ConfirmationCommandTranslator(partFactory, CommandFactory, confirmationFactory), new ErrorCommandTranslator());

            Translator = translator;

            Mock <IDeviceHandler> handler = new Mock <IDeviceHandler>();

            handler.Setup(h => h.SendAsync(It.IsAny <ICommand>())).ReturnsAsync(true);

            DeviceMoq = handler;
            ResponseAwaiterDispatch = ResponseAwaiterDispatchTestObjects.GetProperResponseAwaiterDispatch();
            ProtocolHandler         = new ProtocolHandlerTestWrapper(handler.Object, confirmationFactory, replyFactory, orderFactory, translator, ResponseAwaiterDispatch);
        }
Example #22
0
        public static void RemoveOrder(OrderModel model)
        {
            UnitOfWorkRepository unitOfWork = new UnitOfWorkRepository();
            var order = OrderFactory.ConvertOrderModel(model);

            unitOfWork.OrderRepository.RemoveOrder(order.Id);
        }
Example #23
0
    public void Move(double lat, double lng, BaseUnitInfo info, bool removeWaypoints)
    {
        string Id;

        if (info != null)
        {
            Id = info.Id;
        }
        else
        {
            return;
        }
        UnitMovementOrder order = OrderFactory.CreateUnitMovementOrder(Id, new PositionInfo(lat, lng), removeWaypoints);

        //order.Id = Id;
        //PositionInfo pos = new PositionInfo();
        //pos.Latitude = lat;
        //pos.Longitude = lng;
        //order.RemoveAllExistingWaypoints = removeWaypoints;
        //order.Waypoints.Add(new WaypointInfo(pos));

        GameManager.Instance.NetworkManager.Send(order);

        //GameManager.Instance.MessageManager.AddMessage(string.Format("Move order sendt. Heading for {0}, {1}", lat, lng), GameManager.MessageTypes.Game);
    }
Example #24
0
        public static void Main(string[] args)
        {
            // Lazy loading
            var orderLazy = new OrderLazy();
            var customer  = orderLazy.Customer;

            orderLazy.PrintLabel();

            // Virtual Proxy
            var factory = new OrderFactory();
            var order   = factory.CreateOrder(123);

            order.PrintLabel();
            order.PrintLabel();
            order.PrintLabel();

            // Value holder
            var valueOrderFactory = new OrderFactoryValueHolder();
            var factoryOrder      = valueOrderFactory.CreareOrder(11);
            var items             = factoryOrder.Items;
            var items2            = factoryOrder.Items;
            var items3            = factoryOrder.Items;

            Console.ReadKey();
        }
Example #25
0
    public void ReturnToBase(PlayerUnit unit)
    {
        GameManager.Instance.NetworkManager.Send(OrderFactory.CreateReturnToBaseOrder(unit.Info.Id));

        GameManager.Instance.MessageManager.AddMessage(string.Format(
                                                           "Roger! Returning to base. "), GameManager.MessageTypes.Detection, unit.Position);
    }
Example #26
0
        public void FindOrdersMaterializeResultsIfCustomerExist()
        {
            //Arrange
            var customerRepository = new SICustomerRepository();
            var productRepository  = new SIProductRepository();
            var orderRepository    = new SIOrderRepository();

            orderRepository.GetFilteredExpressionOfFuncOfOrderBoolean = (filter) =>
            {
                var orders   = new List <Order>();
                var customer = new Customer();
                customer.ChangeCurrentIdentity(Guid.NewGuid());
                orders.Add(OrderFactory.CreateOrder(customer, "name", "city", "address", "zipcode"));

                return(orders);
            };

            var salesManagement = new SalesAppService(productRepository, orderRepository, customerRepository);

            //act
            var result = salesManagement.FindOrders(Guid.NewGuid());


            //Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Count == 1);
        }
        public void GetOpenOrders_IfTraderIdIsProvided_RetrievedOrdersShouldBeDateTimeSortedAsDescending()
        {
            ManualResetEvent resetEvent = new ManualResetEvent(false);
            Order            order      = OrderFactory.CreateOrder("100", "XBTUSD", "limit", "buy", 5, 10,
                                                                   new StubbedOrderIdGenerator());

            resetEvent.WaitOne(2000);
            resetEvent.Reset();
            Order order1 = OrderFactory.CreateOrder("100", "XBTUSD", "limit", "buy", 5, 10,
                                                    new StubbedOrderIdGenerator());

            resetEvent.WaitOne(2000);
            resetEvent.Reset();
            Order order2 = OrderFactory.CreateOrder("100", "XBTUSD", "limit", "buy", 5, 10,
                                                    new StubbedOrderIdGenerator());

            resetEvent.WaitOne(2000);
            resetEvent.Reset();
            OrderReadModel model = ReadModelAdapter.GetOrderReadModel(order);

            _persistanceRepository.SaveOrUpdate(model);
            OrderReadModel model1 = ReadModelAdapter.GetOrderReadModel(order1);

            _persistanceRepository.SaveOrUpdate(model1);
            OrderReadModel model2 = ReadModelAdapter.GetOrderReadModel(order2);

            _persistanceRepository.SaveOrUpdate(model2);
            IList <OrderReadModel> getReadModel = _orderRepository.GetOpenOrders("100");

            Assert.NotNull(getReadModel);
            Assert.AreEqual(getReadModel.Count, 3);
            Assert.True(getReadModel[0].DateTime > getReadModel[1].DateTime);
            Assert.True(getReadModel[1].DateTime > getReadModel[2].DateTime);
        }
        public void CanParseDate(string date)
        {
            var      order      = new OrderFactory();
            DateTime?parsedDate = order.ParseDate(date);

            Assert.Equal <DateTime?>(new DateTime(2016, 05, 10), parsedDate);
        }
Example #29
0
        // Sample usage of factory and repository
        public void CreateNewOrder()
        {
            Client client = LoadClient(SystemUser.UserId);
            Order  order  = OrderFactory.CrateOrder(client);

            OrderRepository.Save(order);
        }
        public void Order_Fetch_returns_old_Order_with_expected_data()
        {
            var mocks = new MockRepository();

            using (mocks.Record())
            {
                //mock DTO's
                var lineItemDto1 = mocks.StrictMock <ILineItemDto>();
                Expect.Call(lineItemDto1.Id).Return(200).Repeat.Any();
                Expect.Call(lineItemDto1.ProductName).Return("Widget A").Repeat.Any();
                Expect.Call(lineItemDto1.Price).Return(10M).Repeat.Any();
                Expect.Call(lineItemDto1.Quantity).Return(2).Repeat.Any();
                Expect.Call(lineItemDto1.Timestamp).Return(new byte[8]).Repeat.Any();
                var lineItemDto2 = mocks.StrictMock <ILineItemDto>();
                Expect.Call(lineItemDto2.Id).Return(201).Repeat.Any();
                Expect.Call(lineItemDto2.ProductName).Return("Widget B").Repeat.Any();
                Expect.Call(lineItemDto2.Price).Return(20.5M).Repeat.Any();
                Expect.Call(lineItemDto2.Quantity).Return(3).Repeat.Any();
                Expect.Call(lineItemDto2.Timestamp).Return(new byte[8]).Repeat.Any();
                var orderDto1 = mocks.StrictMock <IOrderDto>();
                Expect.Call(orderDto1.Id).Return(100).Repeat.Any();
                Expect.Call(orderDto1.Customer).Return("Bob").Repeat.Any();
                Expect.Call(orderDto1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
                Expect.Call(orderDto1.ShippingCost).Return(5.5M).Repeat.Any();
                Expect.Call(orderDto1.Timestamp).Return(new byte[8]).Repeat.Any();
                Expect.Call(orderDto1.LineItems).Return(new[] { lineItemDto1, lineItemDto2 }).Repeat.Any();
                //mock read context
                IOrderContext readContext = mocks.StrictMock <IOrderContext>();
                Expect.Call(readContext.FetchSingleWithLineItems(100)).Return(orderDto1);
                readContext.Dispose();
                //mock repository
                var repository = base.MockRepository <IOrderContext>(mocks);
                Expect.Call(repository.CreateContext(false)).Return(readContext);
            }
            using (mocks.Playback())
            {
                //fetch existing order
                IOrderFactory factory = new OrderFactory();
                var           entity  = factory.Fetch(100);
                //test state of entity
                Assert.That(entity.IsNew, Is.False);
                Assert.That(entity.Id, Is.EqualTo(100));
                Assert.That(entity.Customer, Is.EqualTo("Bob"));
                Assert.That(entity.Date, Is.EqualTo(DateTime.Parse("1/1/2008")));
                Assert.That(entity.ShippingCost, Is.EqualTo(5.5M));
                //test state of items in child collection
                var collection = entity.LineItems;
                Assert.That(collection, Is.Not.Null);
                Assert.That(collection.Count, Is.EqualTo(2));
                ILineItem item;
                item = collection[0];
                Assert.That(item.ProductName, Is.EqualTo("Widget A"));
                Assert.That(item.Price, Is.EqualTo(10M));
                Assert.That(item.Quantity, Is.EqualTo(2));
                item = collection[1];
                Assert.That(item.ProductName, Is.EqualTo("Widget B"));
                Assert.That(item.Price, Is.EqualTo(20.5M));
                Assert.That(item.Quantity, Is.EqualTo(3));
            }
        }
 public void Order_Create_returns_new_Order()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         base.MockRepository<IOrderContext>(mocks);
     }
     using (mocks.Playback())
     {
         //create new order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Create();
         Assert.That(entity.IsNew, Is.True);
     }
 }
Example #32
0
        public MorningOrder(OrderFactory orderFactory, int entreeLimit, int sideLimit, int drinkLimit, int desertLimit)
        {
            this.orderFactory = orderFactory;
            Entrees = new List<Dish>();
            Sides = new List<Dish>();
            Drinks = new List<Dish>();
            Deserts = new List<Dish>();

            EntreeLimit = entreeLimit;
            SideLimit = sideLimit;
            DrinkLimit = drinkLimit;
            DesertLimit = desertLimit;

            InvalidDish = false;
        }
 public void OrderInfoCollection_Fetch_returns_expected_data()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         //mock data
         var orderData1 = mocks.StrictMock<IOrderInfoDto>();
         Expect.Call(orderData1.Id).Return(100).Repeat.Any();
         Expect.Call(orderData1.Customer).Return("Bob").Repeat.Any();
         Expect.Call(orderData1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
         var orderData2 = mocks.StrictMock<IOrderInfoDto>();
         Expect.Call(orderData2.Id).Return(101).Repeat.Any();
         Expect.Call(orderData2.Customer).Return("Jim").Repeat.Any();
         Expect.Call(orderData2.Date).Return(DateTime.Parse("2/1/2008")).Repeat.Any();
         //mock read context
         IOrderContext readContext = mocks.StrictMock<IOrderContext>();
         Expect.Call(readContext.FetchInfoList()).Return(new[] { orderData1, orderData2 });
         readContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(false)).Return(readContext);
     }
     using (mocks.Playback())
     {
         //fetch collection
         IOrderFactory factory = new OrderFactory();
         var collection = factory.FetchInfoList();
         //test count
         Assert.That(collection.Count, Is.EqualTo(2));
         //test state of items in collection
         IOrderInfo item;
         item = collection[0];
         Assert.That(item.Id, Is.EqualTo(100));
         Assert.That(item.Customer, Is.EqualTo("Bob"));
         Assert.That(item.Date, Is.EqualTo(DateTime.Parse("1/1/2008")));
         item = collection[1];
         Assert.That(item.Id, Is.EqualTo(101));
         Assert.That(item.Customer, Is.EqualTo("Jim"));
         Assert.That(item.Date, Is.EqualTo(DateTime.Parse("2/1/2008")));
     }
 }
 public void Order_Delete_calls_expected_repository_methods()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         //mock transactional context
         IOrderContext trxContext = mocks.StrictMock<IOrderContext>();
         trxContext.DeleteOrder(100);
         trxContext.CompleteTransaction();
         trxContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(true)).Return(trxContext);
     }
     using (mocks.Playback())
     {
         //delete order
         IOrderFactory factory = new OrderFactory();
         factory.Delete(100);
     }
 }
 public void Order_Save_Delete_calls_expected_repository_methods()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         //mock DTO's
         var orderDto1 = mocks.StrictMock<IOrderDto>();
         Expect.Call(orderDto1.Id).Return(100).Repeat.Any();
         Expect.Call(orderDto1.Customer).Return("Bob").Repeat.Any();
         Expect.Call(orderDto1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
         Expect.Call(orderDto1.ShippingCost).Return(5.5M).Repeat.Any();
         Expect.Call(orderDto1.Timestamp).Return(new byte[8]).Repeat.Any();
         Expect.Call(orderDto1.LineItems).Return(new ILineItemDto[] { }).Repeat.Any();
         //mock read context
         IOrderContext readContext = mocks.StrictMock<IOrderContext>();
         Expect.Call(readContext.FetchSingleWithLineItems(100)).Return(orderDto1);
         readContext.Dispose();
         //mock transactional context
         IOrderContext trxContext = mocks.StrictMock<IOrderContext>();
         trxContext.DeleteOrder(100);
         trxContext.CompleteTransaction();
         trxContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(false)).Return(readContext);
         Expect.Call(repository.CreateContext(true)).Return(trxContext);
     }
     using (mocks.Playback())
     {
         //fetch existing order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Fetch(100);
         //test entity is old
         Assert.That(entity.IsNew, Is.False);
         //test the delete
         entity.Delete();
         entity = entity.Save();
         Assert.That(entity.IsNew, Is.True);
     }
 }
 public void Order_Save_Update_with_changed_line_items_calls_expected_repository_methods()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         var oldTimestamp = new byte[8];
         var newTimestamp = new byte[] { 0, 0, 0, 0, 0, 0, 0, 1 };
         //mock DTO's
         var lineItemDto1 = mocks.StrictMock<ILineItemDto>();
         Expect.Call(lineItemDto1.Id).Return(200).Repeat.Any();
         Expect.Call(lineItemDto1.ProductName).Return("Widget A").Repeat.Any();
         Expect.Call(lineItemDto1.Price).Return(10M).Repeat.Any();
         Expect.Call(lineItemDto1.Quantity).Return(2).Repeat.Any();
         Expect.Call(lineItemDto1.Timestamp).Return(oldTimestamp).Repeat.Any();
         var lineItemDto2 = mocks.StrictMock<ILineItemDto>();
         Expect.Call(lineItemDto2.Id).Return(201).Repeat.Any();
         Expect.Call(lineItemDto2.ProductName).Return("Widget B").Repeat.Any();
         Expect.Call(lineItemDto2.Price).Return(20.5M).Repeat.Any();
         Expect.Call(lineItemDto2.Quantity).Return(3).Repeat.Any();
         Expect.Call(lineItemDto2.Timestamp).Return(oldTimestamp).Repeat.Any();
         var orderDto1 = mocks.StrictMock<IOrderDto>();
         Expect.Call(orderDto1.Id).Return(100).Repeat.Any();
         Expect.Call(orderDto1.Customer).Return("Bob").Repeat.Any();
         Expect.Call(orderDto1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
         Expect.Call(orderDto1.ShippingCost).Return(5.5M).Repeat.Any();
         Expect.Call(orderDto1.Timestamp).Return(oldTimestamp).Repeat.Any();
         Expect.Call(orderDto1.LineItems).Return(new[] { lineItemDto1, lineItemDto2 }).Repeat.Any();
         var updatedLineItemDto2 = mocks.StrictMock<ILineItemDto>();
         updatedLineItemDto2.Id = 200;
         updatedLineItemDto2.OrderId = 100;
         updatedLineItemDto2.ProductName = "Widget A+";
         updatedLineItemDto2.Price = 10M;
         updatedLineItemDto2.Quantity = 2;
         updatedLineItemDto2.Timestamp = oldTimestamp;
         Expect.Call(updatedLineItemDto2.Timestamp).Return(newTimestamp);
         var instertedLineItemDto3 = mocks.StrictMock<ILineItemDto>();
         instertedLineItemDto3.OrderId = 100;
         instertedLineItemDto3.ProductName = "Widget C";
         instertedLineItemDto3.Price = 15.1M;
         instertedLineItemDto3.Quantity = 4;
         Expect.Call(instertedLineItemDto3.Id).Return(202);
         Expect.Call(instertedLineItemDto3.Timestamp).Return(newTimestamp);
         //mock read context
         IOrderContext readContext = mocks.StrictMock<IOrderContext>();
         Expect.Call(readContext.FetchSingleWithLineItems(100)).Return(orderDto1);
         readContext.Dispose();
         //mock transactional context
         IOrderContext trxContext = mocks.StrictMock<IOrderContext>();
         trxContext.UpdateLineItem(updatedLineItemDto2);
         trxContext.DeleteLineItem(201, 100);
         trxContext.InsertLineItem(instertedLineItemDto3);
         trxContext.CompleteTransaction();
         trxContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(false)).Return(readContext);
         Expect.Call(repository.CreateContext(true)).Return(trxContext);
         Expect.Call(repository.CreateLineItemDto()).Return(updatedLineItemDto2);
         Expect.Call(repository.CreateLineItemDto()).Return(instertedLineItemDto3);
     }
     using (mocks.Playback())
     {
         //fetch existing order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Fetch(100);
         ILineItem child;
         //change line item 1
         child = entity.LineItems[0];
         child.ProductName = "Widget A+";
         //delete line item 2
         entity.LineItems.RemoveAt(1);
         //add new line item 3
         child = entity.LineItems.AddNew();
         child.ProductName = "Widget C";
         child.Price = 15.1M;
         child.Quantity = 4;
         //test that entity is old and dirty
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.True);
         //perform update
         entity = entity.Save();
         //test that entity is old and clean
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.False);
     }
 }
 public void Order_Save_Update_with_changed_order_and_no_line_items_calls_expected_repository_methods()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         var oldTimestamp = new byte[8];
         var newTimestamp = new byte[] { 0, 0, 0, 0, 0, 0, 0, 1 };
         //mock DTO's
         var orderDto1 = mocks.StrictMock<IOrderDto>();
         Expect.Call(orderDto1.Id).Return(100).Repeat.Any();
         Expect.Call(orderDto1.Customer).Return("Bob").Repeat.Any();
         Expect.Call(orderDto1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
         Expect.Call(orderDto1.ShippingCost).Return(5.5M).Repeat.Any();
         Expect.Call(orderDto1.Timestamp).Return(oldTimestamp).Repeat.Any();
         Expect.Call(orderDto1.LineItems).Return(new ILineItemDto[] { }).Repeat.Any();
         var updatedOrderDto1 = mocks.StrictMock<IOrderDto>();
         updatedOrderDto1.Id = 100;
         updatedOrderDto1.Customer = "Jim";
         updatedOrderDto1.Date = DateTime.Parse("1/1/2008");
         updatedOrderDto1.ShippingCost = 5.5M;
         updatedOrderDto1.Timestamp = oldTimestamp;
         Expect.Call(updatedOrderDto1.Timestamp).Return(newTimestamp);
         //mock read context
         IOrderContext readContext = mocks.StrictMock<IOrderContext>();
         Expect.Call(readContext.FetchSingleWithLineItems(100)).Return(orderDto1);
         readContext.Dispose();
         //mock transactional context
         IOrderContext trxContext = mocks.StrictMock<IOrderContext>();
         trxContext.UpdateOrder(updatedOrderDto1);
         trxContext.CompleteTransaction();
         trxContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(false)).Return(readContext);
         Expect.Call(repository.CreateContext(true)).Return(trxContext);
         Expect.Call(repository.CreateOrderDto()).Return(updatedOrderDto1);
     }
     using (mocks.Playback())
     {
         //fetch existing order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Fetch(100);
         //change order
         entity.Customer = "Jim";
         //test that entity is old and dirty
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.True);
         //perform update
         entity = entity.Save();
         //test that entity is old and clean
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.False);
     }
 }
 public void Order_Save_Update_with_unchanged_order_and_no_line_items_calls_expected_repository_methods()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         //mock DTO's
         var orderDto1 = mocks.StrictMock<IOrderDto>();
         Expect.Call(orderDto1.Id).Return(100).Repeat.Any();
         Expect.Call(orderDto1.Customer).Return("Bob").Repeat.Any();
         Expect.Call(orderDto1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
         Expect.Call(orderDto1.ShippingCost).Return(5.5M).Repeat.Any();
         Expect.Call(orderDto1.Timestamp).Return(new byte[8]).Repeat.Any();
         Expect.Call(orderDto1.LineItems).Return(new ILineItemDto[] { }).Repeat.Any();
         //mock read context
         IOrderContext readContext = mocks.StrictMock<IOrderContext>();
         Expect.Call(readContext.FetchSingleWithLineItems(100)).Return(orderDto1);
         readContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(false)).Return(readContext);
     }
     using (mocks.Playback())
     {
         //fetch existing order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Fetch(100);
         //change order, but to same value
         entity.Customer = "Bob";
         //test that entity is old and clean (since there were no changes)
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.False);
         //perform update
         entity = entity.Save();
         //test that entity is old and clean
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.False);
     }
 }
 public void Order_Fetch_returns_old_Order_with_expected_data()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         //mock DTO's
         var lineItemDto1 = mocks.StrictMock<ILineItemDto>();
         Expect.Call(lineItemDto1.Id).Return(200).Repeat.Any();
         Expect.Call(lineItemDto1.ProductName).Return("Widget A").Repeat.Any();
         Expect.Call(lineItemDto1.Price).Return(10M).Repeat.Any();
         Expect.Call(lineItemDto1.Quantity).Return(2).Repeat.Any();
         Expect.Call(lineItemDto1.Timestamp).Return(new byte[8]).Repeat.Any();
         var lineItemDto2 = mocks.StrictMock<ILineItemDto>();
         Expect.Call(lineItemDto2.Id).Return(201).Repeat.Any();
         Expect.Call(lineItemDto2.ProductName).Return("Widget B").Repeat.Any();
         Expect.Call(lineItemDto2.Price).Return(20.5M).Repeat.Any();
         Expect.Call(lineItemDto2.Quantity).Return(3).Repeat.Any();
         Expect.Call(lineItemDto2.Timestamp).Return(new byte[8]).Repeat.Any();
         var orderDto1 = mocks.StrictMock<IOrderDto>();
         Expect.Call(orderDto1.Id).Return(100).Repeat.Any();
         Expect.Call(orderDto1.Customer).Return("Bob").Repeat.Any();
         Expect.Call(orderDto1.Date).Return(DateTime.Parse("1/1/2008")).Repeat.Any();
         Expect.Call(orderDto1.ShippingCost).Return(5.5M).Repeat.Any();
         Expect.Call(orderDto1.Timestamp).Return(new byte[8]).Repeat.Any();
         Expect.Call(orderDto1.LineItems).Return(new[] { lineItemDto1, lineItemDto2 }).Repeat.Any();
         //mock read context
         IOrderContext readContext = mocks.StrictMock<IOrderContext>();
         Expect.Call(readContext.FetchSingleWithLineItems(100)).Return(orderDto1);
         readContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(false)).Return(readContext);
     }
     using (mocks.Playback())
     {
         //fetch existing order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Fetch(100);
         //test state of entity
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.Id, Is.EqualTo(100));
         Assert.That(entity.Customer, Is.EqualTo("Bob"));
         Assert.That(entity.Date, Is.EqualTo(DateTime.Parse("1/1/2008")));
         Assert.That(entity.ShippingCost, Is.EqualTo(5.5M));
         //test state of items in child collection
         var collection = entity.LineItems;
         Assert.That(collection, Is.Not.Null);
         Assert.That(collection.Count, Is.EqualTo(2));
         ILineItem item;
         item = collection[0];
         Assert.That(item.ProductName, Is.EqualTo("Widget A"));
         Assert.That(item.Price, Is.EqualTo(10M));
         Assert.That(item.Quantity, Is.EqualTo(2));
         item = collection[1];
         Assert.That(item.ProductName, Is.EqualTo("Widget B"));
         Assert.That(item.Price, Is.EqualTo(20.5M));
         Assert.That(item.Quantity, Is.EqualTo(3));
     }
 }
 public void Order_Save_Insert_calls_expected_repository_methods()
 {
     var mocks = new MockRepository();
     using (mocks.Record())
     {
         //mock DTO's
         var insertedOrderDto1 = mocks.StrictMock<IOrderDto>();
         insertedOrderDto1.Customer = "Bob";
         insertedOrderDto1.Date = DateTime.Parse("1/1/2008");
         insertedOrderDto1.ShippingCost = 5.5M;
         Expect.Call(insertedOrderDto1.Id).Return(100);
         Expect.Call(insertedOrderDto1.Timestamp).Return(new byte[8]);
         var insertedLineItemDto1 = mocks.StrictMock<ILineItemDto>();
         insertedLineItemDto1.OrderId = 100;
         insertedLineItemDto1.ProductName = "Widget A";
         insertedLineItemDto1.Price = 10M;
         insertedLineItemDto1.Quantity = 2;
         Expect.Call(insertedLineItemDto1.Id).Return(200);
         Expect.Call(insertedLineItemDto1.Timestamp).Return(new byte[8]);
         var insertedLineItemDto2 = mocks.StrictMock<ILineItemDto>();
         insertedLineItemDto2.OrderId = 100;
         insertedLineItemDto2.ProductName = "Widget B";
         insertedLineItemDto2.Price = 20.5M;
         insertedLineItemDto2.Quantity = 3;
         Expect.Call(insertedLineItemDto2.Id).Return(201);
         Expect.Call(insertedLineItemDto2.Timestamp).Return(new byte[8]);
         //mock transactional context
         IOrderContext trxContext = mocks.StrictMock<IOrderContext>();
         trxContext.InsertOrder(insertedOrderDto1);
         trxContext.InsertLineItem(insertedLineItemDto1);
         trxContext.InsertLineItem(insertedLineItemDto2);
         trxContext.CompleteTransaction();
         trxContext.Dispose();
         //mock repository
         var repository = base.MockRepository<IOrderContext>(mocks);
         Expect.Call(repository.CreateContext(true)).Return(trxContext);
         Expect.Call(repository.CreateOrderDto()).Return(insertedOrderDto1);
         Expect.Call(repository.CreateLineItemDto()).Return(insertedLineItemDto1);
         Expect.Call(repository.CreateLineItemDto()).Return(insertedLineItemDto2);
     }
     using (mocks.Playback())
     {
         //create new order
         IOrderFactory factory = new OrderFactory();
         var entity = factory.Create();
         //populate order
         entity.Customer = "Bob";
         entity.Date = DateTime.Parse("1/1/2008");
         entity.ShippingCost = 5.5M;
         //add line items
         ILineItem child;
         child = entity.LineItems.AddNew();
         child.ProductName = "Widget A";
         child.Price = 10M;
         child.Quantity = 2;
         child = entity.LineItems.AddNew();
         child.ProductName = "Widget B";
         child.Price = 20.5M;
         child.Quantity = 3;
         //test that entity is new and dirty
         Assert.That(entity.IsNew, Is.True);
         Assert.That(entity.IsDirty, Is.True);
         //perform inserts
         entity = entity.Save();
         //test that entity is old and clean
         Assert.That(entity.IsNew, Is.False);
         Assert.That(entity.IsDirty, Is.False);
     }
 }