public void cannotRejectApprovedOrder()
        {
            Order initialOrder = new Order();

            initialOrder.setStatus(OrderStatus.APPROVED);
            initialOrder.setId(1);
            orderRepository.addOrder(initialOrder);

            OrderApprovalRequest request = new OrderApprovalRequest();

            request.setOrderId(1);
            request.setApproved(false);

            Assert.That(() => useCase.run(request),
                        Throws.TypeOf <ApprovedOrderCannotBeRejectedException>());
        }
        public void shippedOrdersCannotBeApproved()
        {
            Order initialOrder = new Order();

            initialOrder.setStatus(OrderStatus.SHIPPED);
            initialOrder.setId(1);
            orderRepository.addOrder(initialOrder);

            OrderApprovalRequest request = new OrderApprovalRequest();

            request.setOrderId(1);
            request.setApproved(true);

            Assert.That(() => useCase.run(request),
                        Throws.TypeOf <ShippedOrdersCannotBeChangedException>());
        }
        public void rejectedExistingOrder()
        {
            Order initialOrder = new Order();

            initialOrder.setStatus(OrderStatus.CREATED);
            initialOrder.setId(1);
            orderRepository.addOrder(initialOrder);

            OrderApprovalRequest request = new OrderApprovalRequest();

            request.setOrderId(1);
            request.setApproved(false);

            useCase.run(request);

            Order savedOrder = orderRepository.getSavedOrder();

            Assert.That(savedOrder.getStatus(), Is.EqualTo(OrderStatus.REJECTED));
        }