public ProviderNameSearchResultsAndPagination Map(SFADASApprenticeshipsApiTypesV3ProviderSearchResults document, string searchTerm) { var pagination = _orientation.GeneratePaginationDetails(document.PageNumber, document.PageSize, document.TotalResults); var results = new ProviderNameSearchResultsAndPagination() { TotalResults = document.TotalResults, ActualPage = document.PageNumber, ResultsToTake = document.PageSize, LastPage = pagination.LastPage, HasError = false, ResponseCode = ProviderNameSearchResponseCodes.Success, SearchTerm = searchTerm, Results = Map(document.Results) }; return(results); }
public async Task ShouldReturnSuccessCodeAndNotError() { const int numberOfItemsToReturn = 10; const int pageNumber = 1; const string searchTerm = "test"; var returnedResults = new ProviderNameSearchResultsAndPagination { ActualPage = 1, HasError = false, TotalResults = 1 }; _mockNameSearchProvider.Setup(m => m.SearchProviderNameAndAliases(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult(returnedResults)); _mockPaginationSettings.Setup(p => p.DefaultResultsAmount).Returns(numberOfItemsToReturn); var providerNameSearchService = new ProviderNameSearchService(_mockPaginationSettings.Object, _mockNameSearchProvider.Object, _mockLogger.Object); var result = await providerNameSearchService.SearchProviderNameAndAliases(searchTerm, pageNumber, null); var expected = $"Provider Name Search complete: SearchTerm: [{searchTerm}], Page: [{result.ActualPage}], Page Size: [{numberOfItemsToReturn}], Total Results: [{result.TotalResults}]"; _mockLogger.Verify(x => x.Info(expected)); Assert.IsFalse(result.HasError); Assert.AreEqual(ProviderNameSearchResponseCodes.Success, result.ResponseCode); }
public async Task <ProviderNameSearchResultsAndPagination> SearchProviderNameAndAliases(string searchTerm, int page, int pageSize) { var results = new ProviderNameSearchResultsAndPagination(); if (searchTerm.Length < 3) { _logger.Info( $"Search term causing SearchTermTooShort: [{searchTerm}]"); results.SearchTerm = searchTerm; results.ResponseCode = ProviderNameSearchResponseCodes.SearchTermTooShort; return(results); } _logger.Info( $"Provider Name Search started: SearchTerm: [{searchTerm}], Page: [{page}], Page Size: [{pageSize}]"); try { var apiResults = await _searchV3Api.SearchProviderNameAsync(searchTerm, page, pageSize); results = _providerNameSearchMapping.Map(apiResults, searchTerm); } catch (Exception e) { _logger.Error(e, $"Provider Name Search error: SearchTerm: [{searchTerm}], Page: [{page}], Page Size: [{pageSize}]"); results.ResponseCode = ProviderNameSearchResponseCodes.SearchFailed; results.HasError = true; return(results); } _logger.Info( $"Provider Name Search complete: SearchTerm: [{searchTerm}], Page: [{results.ActualPage}], Page Size: [{pageSize}], Total Results: [{results.TotalResults}]"); return(results); }
public void Setup() { _mockProviderNameSearchService = new Mock <IProviderSearchProvider>(); _mockPaginationSettings = new Mock <IPaginationSettings>(); _actualPage = 1; _lastPage = 2; _resultsToTake = 20; _searchTerm = "coventry"; _totalResults = 21; _defaultPageSize = 10; _responseCode = ProviderNameSearchResponseCodes.Success; _searchResults = new List <ProviderNameSearchResult> { new ProviderNameSearchResult { UkPrn = 12345678, ProviderName = "abc", Aliases = null }, new ProviderNameSearchResult { UkPrn = 87654321, ProviderName = "ab stuff", Aliases = new List <string> { "ab1", "ab2" } }, new ProviderNameSearchResult { UkPrn = 12341234, ProviderName = "Smiths Learning", Aliases = null } }; var providerNameSearchResults = new ProviderNameSearchResultsAndPagination { ActualPage = _actualPage, HasError = false, LastPage = _lastPage, ResponseCode = _responseCode, Results = _searchResults, ResultsToTake = _resultsToTake, TotalResults = _totalResults }; var providerNameFirstPageSearchResults = new ProviderNameSearchResultsAndPagination { ActualPage = 1, HasError = false, LastPage = _lastPage, ResponseCode = _responseCode, Results = _searchResults, ResultsToTake = _resultsToTake, TotalResults = _totalResults }; var providerNameDefaultPageSizeSearchResults = new ProviderNameSearchResultsAndPagination { ActualPage = _actualPage, HasError = false, LastPage = _lastPage, ResponseCode = _responseCode, Results = _searchResults, ResultsToTake = _defaultPageSize, TotalResults = _totalResults }; _mockProviderNameSearchService.Setup( x => x.SearchProviderNameAndAliases(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(Task.FromResult(providerNameSearchResults)); _mockProviderNameSearchService.Setup( x => x.SearchProviderNameAndAliases(It.IsAny <string>(), 1, It.IsAny <int>())) .Returns(Task.FromResult(providerNameFirstPageSearchResults)); _mockProviderNameSearchService.Setup( x => x.SearchProviderNameAndAliases(It.IsAny <string>(), It.IsAny <int>(), _defaultPageSize)) .Returns(Task.FromResult(providerNameDefaultPageSizeSearchResults)); _mockPaginationSettings.Setup(x => x.DefaultResultsAmount).Returns(_defaultPageSize); _handler = new ProviderNameSearchHandler( _mockProviderNameSearchService.Object, _mockPaginationSettings.Object); }