public async Task ReturnSuccessfulResultWithAdditionalUsersWithinDefinedDistance(
            UserWithinDistanceCommandHandlerConfigurator configurator,
            UsersWithinDistanceCommand command,
            User[] usersInCity,
            UserBuilder userBuilder)
        {
            var additionalUsers = userBuilder
                                  .WithCoordinate(command.Coordinate)
                                  .BuildMany(5);

            var commandHandler = configurator
                                 .WithUsersInCity(usersInCity)
                                 .WithUsers(additionalUsers)
                                 .Create();

            var result = await commandHandler.Execute(command);

            result
            .Should()
            .BeEquivalentTo(
                new
            {
                IsSuccess = true,
                Users     = usersInCity.Union(additionalUsers).ToList(),
            });
        }
        public async Task ReturnSuccessResultIfNoDistanceSpecified(
            UserWithinDistanceCommandHandlerConfigurator configurator,
            User[] users,
            string city)
        {
            var commandHandler = configurator
                                 .WithUsersInCity(users)
                                 .Create();

            var result = await commandHandler.Execute(new UsersWithinDistanceCommand(city));

            result
            .Should()
            .BeEquivalentTo(
                new
            {
                IsSuccess = true,
                Users     = users.ToList(),
            });
        }
        public async Task ReturnFailedResultIfCouldNotRetrieveUsersInCity(
            UserWithinDistanceCommandHandlerConfigurator configurator,
            UsersWithinDistanceCommand command,
            Exception exception)
        {
            var commandHandler = configurator
                                 .WithUsersInCityResultException(exception)
                                 .Create();

            var result = await commandHandler.Execute(command);

            result
            .Should()
            .BeEquivalentTo(
                new
            {
                IsSuccess = false,
                Exception = exception,
            });
        }