Ejemplo n.º 1
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.");
 }
        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.º 3
0
        public void SetUp()
        {
            order = new Order();
              order.Pay("123", "jose");
              order.Finish();

              representation = OrderRepresentationMapper.Map(order, "http://restbuckson.net/");
        }
        public void WhenOrderExist_ThenCancelAndReturn204()
        {
            // Arrange
              var order = new Order { Id = 123 };
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

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

              // Assert
              response.StatusCode.Should().Be.EqualTo(HttpStatusCode.NoContent);
        }
        public void WhenOrderExist_ThenCancel()
        {
            // Arrange
              var order = new Order { Id = 123 };
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

              // Act
              app.Delete("/order/123/");

              // Assert
              order.Status.Should().Be.EqualTo(OrderStatus.Canceled);
        }
        public void ACallToGet_ShouldReturnMovedPermanentlyAndNewLocation()
        {
            // Arrange
              var order = new Order { Id = 123 };
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

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

              var expected = "http://bogus/trash/order/123";
              responseToGet.StatusCode.Should().Be.EqualTo(HttpStatusCode.MovedPermanently);
              responseToGet.Headers.ContainsKey("Location").Should().Be.True();
              responseToGet.Headers["Location"].Should().Be.EqualTo(expected);
        }
        public void ACallToGetCanceled_ShouldReturnTheOrder()
        {
            // Arrange
              var order = new Order { Id = 123, Status = OrderStatus.Canceled };
              var expectedBody = OrderRepresentationMapper.Map(order, "http://bogus/").ToXmlString();
              order.Status = OrderStatus.Unpaid;
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

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

              responseToGet.StatusCode.Should().Be.EqualTo(HttpStatusCode.OK);
              responseToGet.Body.AsString().Should().Be.EqualTo(expectedBody);
        }
Ejemplo n.º 8
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 WhenOrderExist_ThenUpdateLocation()
        {
            // Arrange
              var order = new Order {Id = 123, Location = Location.InShop};
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

              // Act
              var response = app.Post("/order/123/",
                              with =>
                              {
                                with.HttpRequest();
                                with.Body(new OrderRepresentation {Location = Location.TakeAway}.ToXmlString());
                              });

              // Assert
              response.StatusCode.Should().Be.EqualTo(HttpStatusCode.NoContent);
              order.Location.Should().Be.EqualTo(Location.TakeAway);
        }
Ejemplo n.º 10
0
        public void WhenOrderExist_ThenCancel()
        {
            //Arrange
              var order = new Order {Id = 123};
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

              // Act
              var response = app.Post("/order/123/payment/",
                              with =>
                              {
                                with.HttpRequest();
                                var xmlString = new PaymentRepresentation {CardNumber = "321", CardOwner = "Jose"}.ToXmlString();
                                with.Body(xmlString);
                              });

              order.Status.Should().Be.EqualTo(OrderStatus.Paid);
              order.Payment.CardOwner.Should().Be.EqualTo("Jose");
              order.Payment.CreditCardNumber.Should().Be.EqualTo("321");
        }
Ejemplo n.º 11
0
        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.º 12
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.º 13
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.º 14
0
 public void SetUp()
 {
     order = new Order();
       representation = OrderRepresentationMapper.Map(order, "http://restbuckson.net/");
 }
Ejemplo n.º 15
0
 public void IfTheOrderDoesNotHaveItems_ThenReturnInvalidMessage()
 {
     var order = new Order();
       order.GetErrorMessages()
     .Should().Contain("The order must include at least one item.");
 }
Ejemplo n.º 16
0
        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"));
        }
Ejemplo n.º 17
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);
              }
        }
Ejemplo n.º 18
0
 public void SetUp()
 {
     order = new Order();
       order.Cancel("You are too slow.");
       representation = OrderRepresentationMapper.Map(order, "http://baseaddress/");
 }