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"); }
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 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"); }
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); } }
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); } }
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")); }