public void WhenOrderIsCancelled_ThenReturnItsContent()
        {
            // Arrange
              var order = new Order {Id = 123, Location = Location.TakeAway};
              order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>()));
              order.Status = OrderStatus.Canceled;
              var orderRepo = new RepositoryStub<Order>(order);

              var app = CreateAppProxy(orderRepo);

              //Act
              var response = app.Get("/trash/order/123/",
                             with =>
                             {
                               with.HttpRequest();
                               with.Header("Accept", "application/xml");
                             });

              // Assert
              response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK);
              var body = response.BodyAsXml();
              body.Descendants()
            .Single(e => e.Name.LocalName == "location")
            .Value.Should().Be.EqualTo("takeAway");
        }
Ejemplo n.º 2
0
 public void IfItemHasQuantity0_ThenReturnInvalidMessage()
 {
     var order = new Order();
       order.AddItem(new OrderItem {Quantity = 0});
       order.GetErrorMessages()
     .Should().Contain("Item 0: Quantity should be greater than 0.");
 }
Ejemplo n.º 3
0
        public void IfTheProductDoesNotAllowCustomization_ThenReturnInvalidMessage()
        {
            var product = new Product
                    {
                      Name = "latte",
                      Customizations = {new Customization {Name = "size", PossibleValues = {"medium", "large"}}}
                    };

              var order = new Order();
              order.AddItem(new OrderItem
                    {
                      Quantity = 1,
                      Product = product,
                      Preferences = {{"milk", "lot"}}
                    });
              order.GetErrorMessages()
            .Should().Contain("Item 0: The product latte does not have a customization: milk/lot.");
        }
        public void WhenOrderExists_ThenReturnItsContent()
        {
            // Arrange
              var order = new Order {Id = 123, Location = Location.TakeAway};
              order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>()));
              var orderRepo = new RepositoryStub<Order>(order);

              var app = CreateAppProxy(orderRepo);

              //Act
              var response = app.Get("/order/123/");

              // Assert
              response.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK);
              var body = response.BodyAsXml();
              body.Descendants()
            .Single(e => e.Name.LocalName == "location")
            .Value.Should().Be.EqualTo("takeAway");
        }
Ejemplo n.º 5
0
        public void CanStoreAnOrderWithPayment()
        {
            long id;
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var productRepository = new Repository<Product>(session);
            var product = new Product {Name = "Latte", Price = 10.4m};
            productRepository.MakePersistent(product);

            var orderRepository = new Repository<Order>(session);
            var order = new Order
                    {
                      Date = new DateTime(2011, 1, 1),
                      Location = Location.InShop,
                    };
            order.AddItem(new OrderItem
                      {
                        Product = product,
                        UnitPrice = 10.4m,
                        Preferences =
                          {
                            {"Milk", "skim"},
                            {"Size", "small"}
                          }
                      });
            orderRepository.MakePersistent(order);
            order.Pay("1234", "jose");
            id = order.Id;
            tx.Commit();
              }

              using (var context = sessionFactory.OpenSession())
              {
            var repository = new Repository<Order>(context);
            var order = repository.GetById(id);
            order.Satisfy(o => o.Location == Location.InShop
                           && o.Items.Count() == 1
                           && o.Payment != null);
              }
        }
Ejemplo n.º 6
0
        public void CanChangeStatus()
        {
            long id;
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var productRepository = new Repository<Product>(session);
            var product = new Product {Name = "Latte", Price = 10.4m};
            productRepository.MakePersistent(product);

            var orderRepository = new Repository<Order>(session);
            var order = new Order
                    {
                      Date = new DateTime(2011, 1, 1),
                      Location = Location.InShop,
                    };
            order.AddItem(new OrderItem
                      {
                        Product = product,
                        UnitPrice = 10.4m,
                        Preferences =
                          {
                            {"Milk", "skim"},
                            {"Size", "small"}
                          }
                      });
            orderRepository.MakePersistent(order);
            order.Cancel("cascasas");
            id = order.Id;
            tx.Commit();
              }
              using (var session = sessionFactory.OpenSession())
              using (session.BeginTransaction())
              {
            session.Get<Order>(id).Status.Should().Be.EqualTo(OrderStatus.Canceled);
              }
        }
Ejemplo n.º 7
0
        public void VersionNumberGrowOnEachUpdate()
        {
            long id;
              int version;
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var productRepository = new Repository<Product>(session);
            var product = new Product {Name = "Latte", Price = 10.4m};
            productRepository.MakePersistent(product);

            var orderRepository = new Repository<Order>(session);
            var order = new Order
                    {
                      Date = new DateTime(2011, 1, 1),
                      Location = Location.InShop,
                    };
            order.AddItem(new OrderItem
                      {
                        Product = product,
                        UnitPrice = 10.4m,
                        Preferences =
                          {
                            {"Milk", "skim"},
                            {"Size", "small"}
                          }
                      });
            orderRepository.MakePersistent(order);
            order.Pay("1234", "jose");
            id = order.Id;

            tx.Commit();
            version = order.Version;
              }
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var order = session.Get<Order>(id);
            order.Location = Location.TakeAway;
            tx.Commit();

            order.Version.Should().Be.GreaterThan(version);
              }
        }
        public void WithApplicationXmlAcceptHeaderResponseIsXml()
        {
            // Arrange
              var order = new Order { Id = 123, Location = Location.TakeAway };
              order.AddItem(new OrderItem(latte, 1, 1, new Dictionary<string, string>()));
              var orderRepo = new RepositoryStub<Order>(order);

              var app = CreateAppProxy(orderRepo);

              // Act
              var result = app.Get("/order/123/",
                           with =>
                           {
                             with.HttpRequest();
                             with.Header("Accept", "application/xml");
                           });

              // Assert
              Assert.That(result.Context.Response.ContentType, Is.EqualTo("application/xml"));
        }