public async Task PlaceAutocompleteSearchProcessTest_WithRequiredValues()
        {
            var httpClient  = new HttpClient();
            var restService = new RESTRequest <PlacesResponse, Dictionary <string, string> >(httpClient);
            BusinessResult <SearchPlacesResponse> result = default;

            try
            {
                var request = new SearchPlacesRequest()
                {
                    ApiKey = Globals.Credentials.PlacesApiKey,
                    //Address = "1600 Amphitheatre Pkwy, Mountain View, CA 94043",
                    Address           = "1600 Amphitheatre",
                    PlaceBaseUrl      = _baseUrl,
                    OperationId       = $"{Guid.NewGuid()}",
                    CancellationToken = CancellationToken.None,
                };

                var searchProcessor = new PlaceAutocompleteSearchProcessor(restService, _logger);
                result = await searchProcessor.ExecuteAsync(request);

                _output.WriteLine(JsonConvert.SerializeObject(result));

                Assert.NotNull(result);
                Assert.NotNull(result.Result);
                Assert.IsType <SearchPlacesResponse>(result.Result);
                Assert.Empty(result.Error);
            }
            catch (Exception ex)
            {
                result.Error.Add(new BusinessError(LogLevel.Critical, "test exception", ex, result?.Result?.OperationId));
                _output.WriteLine($"{result.Error}");
                Assert.True(false);
            }
        }
        public async Task PlaceAutocompleteSearchProcessTest_WithoutHttpClient()
        {
            BusinessResult <SearchPlacesResponse> result = default;

            var request = new SearchPlacesRequest()
            {
                ApiKey            = Globals.Credentials.PlacesApiKey,
                Address           = "1600 Amphitheatre",
                PlaceBaseUrl      = _baseUrl,
                OperationId       = $"{Guid.NewGuid()}",
                CancellationToken = CancellationToken.None,
            };

            var searchProcessor = new PlaceAutocompleteSearchProcessor(null, _logger);

            result = await searchProcessor.ExecuteAsync(request);

            _output.WriteLine(JsonConvert.SerializeObject(result));

            Assert.NotNull(result);
            Assert.NotNull(result.Error);
        }
        public async Task PlaceAutocompleteSearchProcessTest_WithBadApiKey()
        {
            BusinessResult <SearchPlacesResponse> result = default;

            var request = new SearchPlacesRequest()
            {
                ApiKey            = "SWdaAjDTZ",
                Address           = "1600 Amphitheatre",
                PlaceBaseUrl      = _baseUrl,
                OperationId       = $"{Guid.NewGuid()}",
                CancellationToken = CancellationToken.None,
            };

            var searchProcessor = new PlaceAutocompleteSearchProcessor(_restService, _logger);

            result = await searchProcessor.ExecuteAsync(request);

            _output.WriteLine(JsonConvert.SerializeObject(result));

            Assert.NotNull(result);
            Assert.NotNull(result.Error);
            Assert.Contains(result.Error, e => e.Message.Contains("Error"));
        }