public async Task AndISearchByTextThenAllTextSearchResultsShouldBeReturned() { //Arrange var query = new SearchOrganisationsQuery { SearchTerm = "test", MaximumResults = 500 }; var search1Results = new List <Organisation> { new Organisation(), new Organisation() }; var search2Results = new List <Organisation> { new Organisation() }; _textSearchService1.Setup(x => x.Search(query.SearchTerm, query.MaximumResults)).ReturnsAsync(search1Results); _textSearchService2.Setup(x => x.Search(query.SearchTerm, query.MaximumResults)).ReturnsAsync(search2Results); //Act var response = await _handler.Handle(query); //Assert var allResults = new List <Organisation>(); allResults.AddRange(search1Results); allResults.AddRange(search2Results); CollectionAssert.AreEqual(allResults, response.Organisations); _referenceSearchService1.Verify(x => x.Search(It.IsAny <string>()), Times.Never); _referenceSearchService2.Verify(x => x.Search(It.IsAny <string>()), Times.Never); }
public async Task AndISearchByReferenceThenTheMatchingRecordShouldBeReturned() { //Arrange var query = new SearchOrganisationsQuery { SearchTerm = "test", MaximumResults = 500 }; var searchResult = new Organisation(); _referenceSearchService1.Setup(x => x.IsSearchTermAReference(query.SearchTerm)).Returns(true); _referenceSearchService2.Setup(x => x.Search(query.SearchTerm)).ReturnsAsync((Organisation)null); _referenceSearchService2.Setup(x => x.IsSearchTermAReference(query.SearchTerm)).Returns(true); _referenceSearchService2.Setup(x => x.Search(query.SearchTerm)).ReturnsAsync(searchResult); //Act var response = await _handler.Handle(query); //Assert Assert.AreEqual(searchResult, response.Organisations.Single()); _textSearchService1.Verify(x => x.Search(It.IsAny <string>(), It.IsAny <int>()), Times.Never); _textSearchService2.Verify(x => x.Search(It.IsAny <string>(), It.IsAny <int>()), Times.Never); }
public async Task AndMoreThanTheMaximumResultsAreFoundThenTheMaximumNumberOfResultsAreReturned() { var query = new SearchOrganisationsQuery { SearchTerm = "test", MaximumResults = 3 }; var search1Results = new List <Organisation> { new Organisation(), new Organisation() }; var search2Results = new List <Organisation> { new Organisation(), new Organisation() }; _textSearchService1.Setup(x => x.Search(query.SearchTerm, query.MaximumResults)).ReturnsAsync(search1Results); _textSearchService2.Setup(x => x.Search(query.SearchTerm, query.MaximumResults)).ReturnsAsync(search2Results); //Act var response = await _handler.Handle(query); //Assert var expectedResults = new List <Organisation>(); expectedResults.AddRange(search1Results); expectedResults.Add(search2Results.First()); CollectionAssert.AreEqual(expectedResults, response.Organisations); }
public async Task <IHttpActionResult> SearchOrganisations(string searchTerm = "", int maximumResults = 500) { var query = new SearchOrganisationsQuery { SearchTerm = searchTerm, MaximumResults = maximumResults }; SearchOrganisationsResponse response; try { response = await _mediator.SendAsync(query); } catch (Exception e) { _logger.Error(e, "Unhandled exception retreiving organisations"); response = new SearchOrganisationsResponse() { Organisations = new List <Organisation>() }; } return(Ok(response.Organisations)); }