public async Task Then_Gets_Reservations_From_Service(
            long accountId,
            [Frozen] ValidationResult validationResult,
            [Frozen] Mock <IReservationService> mockService,
            GetReservationsQueryHandler handler)
        {
            var query = new GetReservationsQuery {
                AccountId = accountId
            };

            validationResult.ValidationDictionary.Clear();

            await handler.Handle(query, CancellationToken.None);

            mockService.Verify(client => client.GetReservations(accountId),
                               Times.Once);
        }
        public async Task Then_Returns_Mapped_Reservations(
            long accountId,
            List <Reservation> serviceReservations,
            [Frozen] ValidationResult validationResult,
            [Frozen] Mock <IReservationService> mockService,
            GetReservationsQueryHandler handler)
        {
            var query = new GetReservationsQuery {
                AccountId = accountId
            };

            validationResult.ValidationDictionary.Clear();
            mockService
            .Setup(client => client.GetReservations(accountId))
            .ReturnsAsync(serviceReservations);

            var result = await handler.Handle(query, CancellationToken.None);

            result.Reservations.Should().BeEquivalentTo(serviceReservations);
        }
        public void And_Invalid_Then_Throws_ValidationException(
            long accountId,
            string propertyName,
            ValidationResult validationResult,
            [Frozen] Mock <IValidator <GetReservationsQuery> > mockValidator,
            GetReservationsQueryHandler handler)
        {
            var query = new GetReservationsQuery {
                AccountId = accountId
            };

            validationResult.AddError(propertyName);
            mockValidator
            .Setup(validator => validator.ValidateAsync(It.IsAny <GetReservationsQuery>()))
            .ReturnsAsync(validationResult);

            Func <Task> act = async() => { await handler.Handle(query, CancellationToken.None); };

            act.Should().ThrowExactly <ValidationException>()
            .Which.ValidationResult.MemberNames.First(c => c.StartsWith(propertyName)).Should().NotBeNullOrEmpty();
        }