public async Task Then_Returns_Http_Create_With_New_ReservationId(
            Guid reservationId,
            ChangeOfPartyRequest request,
            ChangeOfPartyResult mediatorResult,
            ControllerActionDescriptor controllerActionDescriptor,
            [Frozen] Mock <IMediator> mockMediator,
            ReservationsController controller)
        {
            controller.ControllerContext.ActionDescriptor = controllerActionDescriptor;
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <ChangeOfPartyCommand>(command =>
                                                    command.ReservationId == reservationId &&
                                                    command.AccountLegalEntityId == request.AccountLegalEntityId &&
                                                    command.ProviderId == request.ProviderId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var result = await controller.Change(reservationId, request) as CreatedResult;

            result.Location.Should().Be($"api/{controllerActionDescriptor.ControllerName}/{mediatorResult.ReservationId}");
            var model = result.Value as ChangeOfPartyResponse;

            model.ReservationId.Should().Be(mediatorResult.ReservationId);
        }
        public async Task And_AccountLegalEntity_Not_Found_Then_Returns_Http_Bad_Request(
            Guid reservationId,
            ChangeOfPartyRequest request,
            EntityNotFoundException <Domain.Entities.AccountLegalEntity> notFoundException,
            [Frozen] Mock <IMediator> mockMediator,
            ReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <ChangeOfPartyCommand>(),
                       It.IsAny <CancellationToken>()))
            .ThrowsAsync(notFoundException);

            var result = await controller.Change(reservationId, request) as BadRequestObjectResult;

            var model = result.Value as ArgumentErrorViewModel;

            model.Message.Should().Be(notFoundException.Message);
        }
        public async Task And_Fails_Validation_Then_Returns_Http_Bad_Request(
            Guid reservationId,
            ChangeOfPartyRequest request,
            ArgumentException argumentException,
            [Frozen] Mock <IMediator> mockMediator,
            ReservationsController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <ChangeOfPartyCommand>(),
                       It.IsAny <CancellationToken>()))
            .ThrowsAsync(argumentException);

            var result = await controller.Change(reservationId, request) as BadRequestObjectResult;

            var model = result.Value as ArgumentErrorViewModel;

            model.Message.Should().Be(argumentException.Message);
            model.Params.Should().Be(argumentException.ParamName);
        }