public void GetAll_should_return_all_from_OrderService_Subspec()
        {
            
            var orders = default(Order[]);
            var mockOrderService = default(Mock<IOrderService>);
            var orderController = default(OrderController);
            var result = default(IEnumerable<Order>);

            "Given order service contains no orders"
                .Context(() =>
                             {
                                 orders = new Order[0];
                                 mockOrderService = new Mock<IOrderService>();
                                 orderController = new OrderController(mockOrderService.Object);
                                 mockOrderService.Setup(x => x.GetAll())
                                                 .Returns(orders);
                             });


            "When I ask for all orders from orderController"
                .Do(() =>
                        {
                            result = orderController.Get();
                        });
            "Then it must not be null"
                .Observation(() =>
                                 {
                                     Assert.NotNull(result);
                                 });
            "And it should contain no order"
                .Observation(() =>
                                 {
                                     Assert.Empty(result);
                                 });
        }
        public void Get_should_return_OK_if_order_exists()
        {
            // arrange
            const int OrderId = 123;
            var order = new Order()
                            {
                                Id = OrderId
                            };

            var mockOrderService = new Mock<IOrderService>();
            mockOrderService.Setup(x => x.Exists(It.IsAny<int>()))
                        .Returns(true);

            mockOrderService.Setup(x => x.Get(It.IsAny<int>()))
                .Returns(order);
            var orderController = new OrderController(mockOrderService.Object);
            var request = new HttpRequestMessage();
            request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();

            // act
            var result = orderController.Get(request,  OrderId);

            // assert
            Assert.Equal(HttpStatusCode.OK, result.StatusCode);
        }
        public HttpResponseMessage Put(HttpRequestMessage request, Order order)
        {
            if (!_orderService.Exists(order.Id))
                return request.CreateErrorResponse(HttpStatusCode.NotFound, "Order does not exist");

            _orderService.Update(order);
            return request.CreateResponse(HttpStatusCode.OK);
        }
        public void Save(Order order)
        {
            if (order.Id == 0)
                order.Id = _random.Next(); // assign random Id if a new order

            order.TotalPrice = _pricingService.GetPrice(order);

            _orders.Add(order.Id, order);
        }
        public HttpResponseMessage Post(HttpRequestMessage request, Order order)
        {
            if (!order.Items.Any())
                return request.CreateErrorResponse(HttpStatusCode.BadRequest, "Order has no items");

            if(_orderService.Exists(order.Id))
                return request.CreateErrorResponse(HttpStatusCode.BadRequest, "Order already exists");

            _orderService.Save(order);
            var response = request.CreateResponse(HttpStatusCode.Created);
            response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = order.Id }));
            return response;
        }
        public decimal GetPrice(Order order)
        {
            const decimal BasePriceForAnyPizza = 7.5m;
            const decimal ValueAddedTax = 0.20m;

            // price of the pizza is calculated by the base price plus 
            // 0.5 for every character in the name of the pizza! 


            var priceBeforeTax = order.Items.Sum(x => x.Quantity * 
                (BasePriceForAnyPizza + 0.5m*x.Name.Length));
                                 
            return priceBeforeTax + (priceBeforeTax * ValueAddedTax);
        }
        public void GetAll_should_return_all_from_OrderService()
        {
            // arrange
            var orders = new Order[0];
            var mockOrderService = new Mock<IOrderService>();
            mockOrderService.Setup(x => x.GetAll())
                        .Returns(orders);
            var orderController = new OrderController(mockOrderService.Object);
            
            // act
            var result = orderController.Get();

            // assert
            Assert.Equal(orders, result);
        }
 public void GivenIHaveAnOrderForAMixtureOfPizzas()
 {
     var order = new Order();
     order.Items = new[]
                       {
                           new OrderItem()
                               {
                                   Name = "Hawaiian",
                                   Quantity = 2
                               }, 
                               new OrderItem()
                                   {
                                       Name = "Meat Feast",
                                       Quantity = 1
                                   } 
                       };
     ScenarioContext.Current[TestContextKeys.NewOrder] = order;
 }
Beispiel #9
0
        public async Task<IHttpActionResult> RegiterNew(OrderDTO orderDTO)
        {
            var order = new Order(orderDTO.CustomerName, orderDTO.CustomerPhone, orderDTO.PizzaID);

            _dbSet.Add(order);
            await _context.SaveChangesAsync();

            orderDTO = (OrderDTO)new OrderDTO().InjectFrom(order);
            orderDTO.StatusDescription = ((OrderStatus)order.Status).ToString();

            return Created(new Uri(_baseUri + orderDTO.OrderID), orderDTO);
        }
 public void Update(Order order)
 {
     order.TotalPrice = _pricingService.GetPrice(order);
     _orders[order.Id] = order;
 }
        public void Post_should_return_Created_if_order_good_fluentApi()
        {
            // arrange
            const string url = "http://localhost:2345/api/Order/";
            const int OrderId = 123;
            var order = new Order(new OrderItem[]
                                      {
                                          new OrderItem()
                                              {
                                                  Name = "Name",
                                                  Quantity = 1
                                              }
                                      })
            {
                Id = OrderId
            };
            var mockOrderService = new Mock<IOrderService>();
            mockOrderService.Setup(x => x.Exists(It.IsAny<int>()))
                        .Returns(false);

            var orderController = ControllerContextSetup
                .Of(() => new OrderController(mockOrderService.Object))
                .WithDefaultConfig()
                .WithDefaultRoute()
                .Requesting(url)
                .WithRouteData(new {controller="Order"})
                .Build<OrderController>();

            
            // act
            var result = orderController.Post(orderController.Request, order);
            
            // assert
            Assert.Equal(HttpStatusCode.Created, result.StatusCode);
            Assert.NotNull(result.Headers.Location);
            Assert.Equal(result.Headers.Location, new Uri(new Uri(url), order.Id.ToString()));
        }
        public void Post_should_return_Created_if_order_good()
        {
            // arrange
            const int OrderId = 123;
            var order = new Order(new OrderItem[]
                                      {
                                          new OrderItem()
                                              {
                                                  Name = "Name",
                                                  Quantity = 1
                                              }
                                      })
            {
                Id = OrderId
            };
            var mockOrderService = new Mock<IOrderService>();
            mockOrderService.Setup(x => x.Exists(It.IsAny<int>()))
                        .Returns(false);

            var orderController = new OrderController(mockOrderService.Object);
            var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:2345/api/Order");
            var config = new HttpConfiguration();
            request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
            orderController.Request = request;
            orderController.Configuration = config;
            config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new {id = RouteParameter.Optional});
            var route = config.Routes["DefaultApi"];
            var httpRouteData = new HttpRouteData(route, new HttpRouteValueDictionary(new { controller = "Order" }));
            orderController.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = httpRouteData;
            
            // act
            var result = orderController.Post(request, order);

            // assert
            Assert.Equal(HttpStatusCode.Created, result.StatusCode);
        }
        public void Post_should_return_BadRequest_if_order_hasNoOrderItems()
        {
            // arrange
            const int OrderId = 123;
            var order = new Order()
            {
                Id = OrderId,
            };
            var mockOrderService = new Mock<IOrderService>();
            mockOrderService.Setup(x => x.Exists(It.IsAny<int>()))
                        .Returns(false);

            var orderController = new OrderController(mockOrderService.Object);
            var request = new HttpRequestMessage();
            request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();

            // act
            var result = orderController.Post(request, order);

            // assert
            Assert.Equal(HttpStatusCode.BadRequest, result.StatusCode);
        }