public async Task <List <Standard> > Handle(SearchStandardsRequest request, CancellationToken cancellationToken) { _logger.LogInformation("Handling Search Standards Request"); var searchstring = _cleanser.UnescapeAndRemoveNonAlphanumericCharacters(request.SearchTerm); var validationResponse = _validator.ValidatorSearchStandardsRequest(new SearchStandardsValidationRequest { Searchstring = searchstring }); if (!validationResponse.IsValid) { var message = validationResponse.Errors.Aggregate(string.Empty, (current, error) => current + error.ErrorMessage + "; "); _logger.LogError(message); if (validationResponse.Errors.Any(x => x.StatusCode == ValidationStatusCode.BadRequest.ToString())) { throw new BadRequestException(message); } throw new Exception(message); } var isAnInt = int.TryParse(searchstring, out var intSearchString); var allStandards = await _standardService.GetLatestStandardVersions(); return(isAnInt ? allStandards.Where(x => x.LarsCode == intSearchString).ToList() : allStandards.Where(x => _cleanser.UnescapeAndRemoveNonAlphanumericCharacters(x.Title.ToLower()).Contains(searchstring.ToLower())).ToList()); }
public void SearchStandardsThrowsBadRequestExceptionIfSearchStringTooShort(string search) { var request = new SearchStandardsRequest { SearchTerm = search }; _cleanserService.Setup(c => c.UnescapeAndRemoveNonAlphanumericCharacters(search)).Returns(search.Trim()); _validator.Setup(v => v.ValidatorSearchStandardsRequest(It.IsAny <SearchStandardsValidationRequest>())).Returns(errorResponse); Assert.ThrowsAsync <BadRequestException>(() => _searchStandardsHandler.Handle(request, new CancellationToken())); }
public void SearchStandardsWithValidWordSearchReturnsZeroResults() { var searchstring = "no match"; var request = new SearchStandardsRequest { SearchTerm = searchstring }; _cleanserService.Setup(c => c.UnescapeAndRemoveNonAlphanumericCharacters(searchstring)).Returns(searchstring); _standardService.Setup(r => r.GetAllStandards()) .Returns(Task.FromResult(_expectedStandards.AsEnumerable())); var standardSummaries = _searchStandardsHandler.Handle(request, new CancellationToken()).Result; standardSummaries.Count.Should().Be(0); }
public void SearchStandardsWithValidStandardId() { var searchstring = _standardSummary1.LarsCode.ToString(); var request = new SearchStandardsRequest { SearchTerm = searchstring }; _cleanserService.Setup(c => c.UnescapeAndRemoveNonAlphanumericCharacters(searchstring)).Returns(searchstring); _standardService.Setup(r => r.GetLatestStandardVersions()) .Returns(Task.FromResult(_expectedStandards.AsEnumerable())); var standards = _searchStandardsHandler.Handle(request, new CancellationToken()).Result; standards.Count.Should().Be(1); standards.Should().Contain(_standardSummary1); }