コード例 #1
0
 static PatchingOrderBuilder()
 {
     OrderRepository        = new OrderRepositoryInMemory();
     ClientsRepository      = new ClientsRepositoryInMemory();
     StorageItemsRepository = new StorageItemsRepositoryInMemory();
 }
コード例 #2
0
        public void OrdersService_PayOrder_WithInitiatedOrderUsingStandardMethod_StatusChangedToPaid()
        {
            //ARRANGE
            var clientsRepository      = new ClientsRepositoryInMemory();
            var ordersRepository       = new OrderRepositoryInMemory();
            var storageItemsRepository = new StorageItemsRepositoryInMemory();
            var mailService            = new MailService();

            var address = new Address
            {
                AddressLine = "RandomStreet 1",
                City        = "RandomCity",
                PostalCode  = "RandomPostalCode",
                IsDefault   = true
            };

            var email = new Email
            {
                EmailString = "*****@*****.**",
                IsDefault   = true
            };

            var client = new Client
            {
                Addresses = new List <Address> {
                    address
                },
                Balance = 100,
                Emails  = new List <Email> {
                    email
                },
                FirstName  = "RandomFirstName",
                Id         = 1,
                LastName   = "RandomLastName",
                MiddleName = "RandomMiddleName"
            };

            var shopAddress = new Address
            {
                AddressLine = "RandomStreet 1",
                City        = "RandomCity",
                PostalCode  = "RandomPostalCode",
                IsDefault   = true
            };

            var shop = new Shop
            {
                CompanyNumber = "00001",
                Address       = shopAddress,
                Title         = "RandomTitle"
            };

            var product = new Product
            {
                Id    = 1,
                Price = 10,
                Title = "RandomTitle1",
            };

            var storageItem = new StorageItem
            {
                Id       = 1,
                Product  = product,
                Quantity = 2
            };

            var orderLine = new OrderLine
            {
                Product  = product,
                Quantity = 2
            };

            var order = new Order
            {
                Status       = OrderStatus.Initiated,
                CreationDate = DateTime.Now,
                FinishDate   = null,
                Id           = 1,
                Initiator    = client,
                Notes        = string.Empty,
                Shop         = shop,
                OrderLines   = new List <OrderLine> {
                    orderLine
                }
            };

            ordersRepository.Orders = new List <Order> {
                order
            };
            clientsRepository.Clients = new List <Client> {
                client
            };
            storageItemsRepository.StorageItems = new List <StorageItem> {
                storageItem
            };

            //ACT
            var ordersService = new OrdersService(ordersRepository, storageItemsRepository, clientsRepository, mailService);

            ordersService.PayOrder(order.Id, client.Id);

            //ASSERT
            order  = ordersRepository.Orders.First(p => p.Id == order.Id);
            client = clientsRepository.Clients.First(p => p.Id == client.Id);

            Assert.That(order.Status, Is.EqualTo(OrderStatus.Paid));
            Assert.That(client.Balance, Is.EqualTo(80m));
        }