public void WhenBuildingUriWithCompanySearchRequest()
        {
            var request = new CompanySearchRequest
            {
                Query = Query,
                ItemsPerPage = ItemsPerPage,
                StartIndex = StartIndex
            };

            _actualUri = _uriBuilder.Build(request);
        }
        public async Task<CompaniesHouseClientResponse<CompanySearch>> SearchCompanyAsync(CompanySearchRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            using (var httpClient = _httpClientFactory.CreateHttpClient())
            {
                var requestUri = _companySearchUriBuilder.Build(request);

                var response = await httpClient.GetAsync(requestUri, cancellationToken).ConfigureAwait(false);

                response.EnsureSuccessStatusCode();

                var result = await response.Content.ReadAsAsync<CompanySearch>(cancellationToken).ConfigureAwait(false);

                return new CompaniesHouseClientResponse<CompanySearch>(result);
            }

        }
        public Uri Build(CompanySearchRequest request)
        {
            var path = "search/companies";

            var query = $"?q={Uri.EscapeDataString(request.Query)}";

            if (request.ItemsPerPage.HasValue)
            {
                query += "&items_per_page=" + request.ItemsPerPage.Value;
            }

            if (request.StartIndex.HasValue)
            {
                query += "&start_index=" + request.StartIndex.Value;
            }

            var pathAndQuery = path + query;

            return new Uri(pathAndQuery, UriKind.Relative);
        }
 public Task<CompaniesHouseClientResponse<CompanySearch>> SearchCompanyAsync(CompanySearchRequest request, CancellationToken cancellationToken = default(CancellationToken))
 {
     return _companiesHouseSearchCompanyClient.SearchCompanyAsync(request, cancellationToken);
 }