Esempio n. 1
0
        /// <summary>
        /// Builds a valid Establishment Search API URL.
        /// </summary>
        /// <param name="endpoint">The endpoint for the search API.</param>
        /// <param name="criteria">The criteria to search.</param>
        /// <returns></returns>
        private string BuildEstablishmentCriteriaUrl(string endpoint, EstablishmentSearchCriteria criteria)
        {
            var queryStringParameters = new List <string>();

            if (criteria != null)
            {
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.Name, criteria.Name, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.Address, criteria.Address, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.Longitude, criteria.Longitude, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.Latitude, criteria.Latitude, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.MaxDistanceLimit, criteria.MaxDistanceLimit, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.BusinessTypeId, criteria.BusinessTypeId, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.SchemeTypeKey, criteria.SchemeTypeKey, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.RatingKey, criteria.RatingKey, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.RatingOperatorKey, criteria.RatingOperatorKey, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.LocalAuthorityId, criteria.LocalAuthorityId, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.CountryId, criteria.CountryId, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.SortOptionKey, criteria.SortOptionKey, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.PageNumber, criteria.PageNumber, queryStringParameters);
                AddQueryKeyValueToSource(EntityConstants.EstablishmentSearchCriteriaKeys.PageSize, criteria.PageSize, queryStringParameters);
            }

            return(queryStringParameters.Any()
                ?
                   $"{HttpConstants.FhrHttpProtocol}://{HttpConstants.FhrBaseApiUrl}/{endpoint}?{string.Join("&", queryStringParameters)}"
                :
                   $"{HttpConstants.FhrHttpProtocol}://{HttpConstants.FhrBaseApiUrl}/{endpoint}");
        }
Esempio n. 2
0
        /// <inheritdoc />
        public async Task <FhrResponse <Establishments> > GetBasicAsync(EstablishmentSearchCriteria criteria)
        {
            var url = BuildEstablishmentCriteriaUrl(HttpConstants.Endpoints.EstablishmentsBasic, criteria);

            var response = await _httpService.GetAsync <Establishments>(url);

            return(response);
        }
            public async Task ProvidesCorrectEncodedApiUrlWhenCriteriaExists(string name)
            {
                // Arrange
                MockHttpProvider
                .Setup(http => http.GetAsync(It.IsAny <string>(), It.IsAny <IDictionary <string, string> >()))
                .Returns(Task.FromResult(GenerateHttpResponse(string.Empty)));

                // Act
                var criteria = new EstablishmentSearchCriteria {
                    Name = name
                };
                await Service.GetBasicAsync(criteria);

                // Assert
                var expected = $"{HttpConstants.FhrHttpProtocol}://{HttpConstants.FhrBaseApiUrl}/Establishments/basic?name={WebUtility.UrlEncode(name)}&address=&longitude=&latitude=&maxDistanceLimit=&businessTypeId=&schemeTypeKey=&ratingKey=&ratingOperatorKey=&localAuthorityId=&countryId=&sortOptionKey=&pageNumber=&pageSize=";

                MockHttpProvider.Verify(http => http.GetAsync(It.Is <string>(s => s == expected), It.IsAny <IDictionary <string, string> >()));
            }