public void CancelOrderThrowsExceptionIfNoOrderOrWrongUser()
        {
            Mock <IOrderRepository> orderRepository = new Mock <IOrderRepository>(MockBehavior.Strict);

            var orderService = new ca_service.Services.OrderService(orderRepository.Object, null, null, null);

            int orderId = 42, userId = 9, wrongUserId = 99;

            Order theOrder = null;

            orderRepository.Setup(x => x.Get(orderId)).Returns(() => theOrder);

            Order result;

            Assert.Throws <Exception>(() => result = orderService.CancelOrder(orderId, userId));

            theOrder = new Order(orderId)
            {
                Status = OrderStatus.Placed, UserId = userId
            };

            Assert.Throws <Exception>(() => result = orderService.CancelOrder(orderId, wrongUserId));
        }
        public void CancelOrderSetsOrderStatusToCancelled()
        {
            Mock <IOrderRepository> orderRepository = new Mock <IOrderRepository>(MockBehavior.Strict);

            var orderService = new ca_service.Services.OrderService(orderRepository.Object, null, null, null);

            int orderId = 42, userId = 9;

            Order theOrder = new Order(orderId)
            {
                Status = OrderStatus.Placed, UserId = userId
            };

            orderRepository.Setup(x => x.Get(orderId)).Returns(() => theOrder);
            orderRepository.Setup(x => x.Update(It.IsAny <Order>()));

            var result = orderService.CancelOrder(orderId, userId);

            Assert.Equal(OrderStatus.UserCancelled, result.Status);

            orderRepository.VerifyAll();
        }