Example #1
0
        public void WhenOrderIsOk_ThenInsertANewOrderWithTheProductsAndPrice()
        {
            var orderRepository     = new RepositoryStub <Order>();
            var appProxy            = CreateAppProxy(orderRepository);
            var orderRepresentation = new OrderRepresentation()
            {
                Items = { new OrderItemRepresentation()
                          {
                              Name = "latte", Quantity = 1
                          } }
            };

            //act
            appProxy.Post("/orders/",
                          with =>
            {
                with.Header("Content-Type", "application/xml");
                with.Body(orderRepresentation.ToXmlString());
            });

            // assert
            var order = orderRepository.RetrieveAll().First();

            order.Satisfy(_ => _.Items.Any(i => i.Product == latte && i.UnitPrice == 2.5m && i.Quantity == 1));
        }
Example #2
0
        public void WhenItemHasQuantity0_ThenReturn400AndTheProperREasonPhrase()
        {
            var appProxy            = CreateAppProxy();
            var orderRepresentation = new OrderRepresentation()
            {
                Items = { new OrderItemRepresentation()
                          {
                              Name = "latte", Quantity = 0
                          } }
            };

            // act
            var result =
                appProxy.Post("/orders/",
                              with =>
            {
                with.Header("Content-Type", "application/xml");
                with.Body(orderRepresentation.ToXmlString());
            });

            // assert
            result.StatusCode.Should().Be.EqualTo(HttpStatusCode.BadRequest);
            result.Headers["ReasonPhrase"].Should().Be.EqualTo("Invalid entities values");
            result.Body.AsString().Should().Be.EqualTo("Item 0: Quantity should be greater than 0.");
        }
Example #3
0
        public void WhenOrderIsOk_ThenResponseHasStatus201AndLocation()
        {
            var orderRepository = new Mock <IRepository <Order> >();

            orderRepository
            .Setup(or => or.MakePersistent(It.IsAny <Order[]>()))
            .Callback <Order[]>(o => o.First().Id = 123);

            var expectedUriToTheNewOrder =
                resourceLinker.BuildUriString("/order/", OrderResourceHandler.SlashOrderId, new { orderId = "123" });

            var appProxy            = CreateAppProxy(orderRepository.Object);
            var orderRepresentation = new OrderRepresentation()
            {
                Items = { new OrderItemRepresentation()
                          {
                              Name = "latte", Quantity = 1
                          } }
            };
            // act
            var result = appProxy.Post("/orders/",
                                       with =>
            {
                with.Header("Content-Type", "application/xml");
                with.Body(orderRepresentation.ToXmlString());
            });


            result.StatusCode.Should().Be.EqualTo(HttpStatusCode.Created);
            result.Headers["Location"].Should().Be.EqualTo(expectedUriToTheNewOrder);
        }
Example #4
0
        public void WhenOrderIsOk_ThenInsertANewOrderWithTheLocationInfo()
        {
            var orderRepository     = new RepositoryStub <Order>();
            var appProxy            = CreateAppProxy(orderRepository);
            var orderRepresentation = new OrderRepresentation()
            {
                Location = Location.InShop,
                Items    = { new OrderItemRepresentation()
                             {
                                 Name = "latte", Quantity = 1
                             } }
            };

            //act
            var result = appProxy.Post("/orders/",
                                       with =>
            {
                with.Header("Content-Type", "application/xml");
                with.Body(orderRepresentation.ToXmlString());
            });

            var order = orderRepository.RetrieveAll().First();

            order.Location.Should().Be.EqualTo(Location.InShop);
        }
        public void WhenAProductDoesNotExist_ThenReturn400AndTheProperREasonPhrase()
        {
            var appProxy = CreateAppProxy();
              var orderRepresentation = new OrderRepresentation()
                                {
                                  Items = {new OrderItemRepresentation() {Name = "beer"}}
                                };

              var result =
            appProxy.Post("/orders/",
                      with =>
                      {
                        with.Header("Content-Type", "application/xml");
                        with.Body(orderRepresentation.ToXmlString());
                      });

              result.StatusCode.Should().Be.EqualTo(HttpStatusCode.BadRequest);
              result.Headers["ReasonPhrase"].Should().Be.EqualTo("We don't offer beer");
        }
        public void WhenItemHasQuantity0_ThenReturn400AndTheProperREasonPhrase()
        {
            var appProxy = CreateAppProxy();
              var orderRepresentation = new OrderRepresentation()
                                {
                                  Items = {new OrderItemRepresentation() {Name = "latte", Quantity = 0}}
                                };

              // act
              var result =
            appProxy.Post("/orders/",
                      with =>
                      {
                        with.Header("Content-Type", "application/xml");
                        with.Body(orderRepresentation.ToXmlString());
                      });

              // assert
              result.StatusCode.Should().Be.EqualTo(HttpStatusCode.BadRequest);
              result.Headers["ReasonPhrase"].Should().Be.EqualTo("Invalid entities values");
              result.Body.AsString().Should().Be.EqualTo("Item 0: Quantity should be greater than 0.");
        }
        public void SerializeOrder()
        {
            var orderRepresentation = new OrderRepresentation
            {
                Cost     = 100.4m,
                Location = Location.InShop,
                Items    =
                {
                    new OrderItemRepresentation
                    {
                        Name        = "latte",
                        Preferences =
                        {
                            { "size", "large" },
                            { "milk", "skim"  }
                        }
                    }
                }
            };

            Assert.DoesNotThrow((() => orderRepresentation.ToXmlString()));
        }
        public void SerializeOrder()
        {
            var orderRepresentation = new OrderRepresentation
                                {
                                  Cost = 100.4m,
                                  Location = Location.InShop,
                                  Items =
                                    {
                                      new OrderItemRepresentation
                                      {
                                        Name = "latte",
                                        Preferences =
                                          {
                                            {"size", "large"},
                                            {"milk", "skim"}
                                          }
                                      }
                                    }
                                };

              Assert.DoesNotThrow((() => orderRepresentation.ToXmlString()));
        }
        public void WhenAProductDoesNotExist_ThenReturn400AndTheProperREasonPhrase()
        {
            var appProxy            = CreateAppProxy();
            var orderRepresentation = new OrderRepresentation
            {
                Items = { new OrderItemRepresentation {
                              Name = "beer"
                          } }
            };

            var result =
                appProxy.Post("/orders/",
                              with =>
            {
                with.Header("Content-Type", "application/xml");
                with.Body(orderRepresentation.ToXmlString());
            });


            result.StatusCode.Should().Be.EqualTo(HttpStatusCode.BadRequest);
            result.Headers["ReasonPhrase"].Should().Be.EqualTo("We don't offer beer");
        }
        public void WhenOrderIsOk_ThenInsertANewOrderWithTheLocationInfo()
        {
            var orderRepository = new RepositoryStub<Order>();
              var appProxy = CreateAppProxy(orderRepository);
              var orderRepresentation = new OrderRepresentation()
                                {
                                  Location = Location.InShop,
                                  Items = {new OrderItemRepresentation() {Name = "latte", Quantity = 1}}
                                };

              //act
              var result = appProxy.Post("/orders/",
                                 with =>
                                 {
                                   with.Header("Content-Type", "application/xml");
                                   with.Body(orderRepresentation.ToXmlString());
                                 });

              var order = orderRepository.RetrieveAll().First();
              order.Location.Should().Be.EqualTo(Location.InShop);
        }
        public void WhenOrderIsOk_ThenResponseHasStatus201AndLocation()
        {
            var orderRepository = new Mock<IRepository<Order>>();
              orderRepository
            .Setup(or => or.MakePersistent(It.IsAny<Order[]>()))
            .Callback<Order[]>(o => o.First().Id = 123);

              var expectedUriToTheNewOrder =
            resourceLinker.BuildUriString("/order/", OrderResourceModule.SlashOrderId,new { orderId = "123" });

              var appProxy = CreateAppProxy(orderRepository.Object);
              var orderRepresentation = new OrderRepresentation()
                                {
                                  Items = {new OrderItemRepresentation() {Name = "latte", Quantity = 1}}
                                };
              // act
              var result = appProxy.Post("/orders/",
                      with =>
                      {
                        with.Header("Content-Type", "application/xml");
                        with.Body(orderRepresentation.ToXmlString());
                      });

              result.StatusCode.Should().Be.EqualTo(HttpStatusCode.Created);
              result.Headers["Location"].Should().Be.EqualTo(expectedUriToTheNewOrder);
        }
        public void WhenOrderIsOk_ThenInsertANewOrderWithTheProductsAndPrice()
        {
            var orderRepository = new RepositoryStub<Order>();
              var appProxy = CreateAppProxy(orderRepository);
              var orderRepresentation = new OrderRepresentation() {Items = {new OrderItemRepresentation() {Name = "latte", Quantity = 1}}};

              //act
              appProxy.Post("/orders/",
                      with =>
                      {
                        with.Header("Content-Type", "application/xml");
                        with.Body(orderRepresentation.ToXmlString());
                      });

              // assert
              var order = orderRepository.RetrieveAll().First();
              order.Satisfy(_ => _.Items.Any(i => i.Product == latte && i.UnitPrice == 2.5m && i.Quantity == 1));
        }