protected override void Because_of() { this.response = this.Sut.Search <Person>( this.uri, new Search() { SearchOptions = new SearchOptions() { MultiPage = true, ResultsPerPage = 1 } }); }
public void InvalidResponseIsReturned() { // Arrange var search = SearchBuilder.CreateSearch(); search.AddSearchCriteria(SearchCombinator.And) .AddCriteria("A", SearchCondition.Equals, "34", false); this.searchResult = new PagedWebResponse<IList<SourceSystem>> { IsValid = false }; this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult); // Act var result = this.cacheService.Search(search); // Assert Assert.AreEqual(this.searchResult, result); }
public void ServiceInvokedOnFirstCall() { // Arrange var search = SearchBuilder.CreateSearch(); search.AddSearchCriteria(SearchCombinator.And) .AddCriteria("A", SearchCondition.Equals, "34", false); this.searchResult = new PagedWebResponse <IList <SourceSystem> >(); this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult); // Act var result = this.cacheService.Search(search); // Assert Assert.AreEqual(this.searchResult, result); this.mdmService.Verify(x => x.Search(search), Times.AtMostOnce()); }
public void CacheUsedOnSecondCall() { // Arrange var search = SearchBuilder.CreateSearch(); search.AddSearchCriteria(SearchCombinator.And) .AddCriteria("A", SearchCondition.Equals, "34", false); this.searchResult = new PagedWebResponse<IList<SourceSystem>>(); this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult); // Act this.cacheService.Search(search); var result = this.cacheService.Search(search); // Assert Assert.AreEqual(this.searchResult, result); this.mdmService.Verify(x => x.Search(search), Times.AtMostOnce()); }
public void InvalidResponseIsReturned() { // Arrange var search = SearchBuilder.CreateSearch(); search.AddSearchCriteria(SearchCombinator.And) .AddCriteria("A", SearchCondition.Equals, "34", false); this.searchResult = new PagedWebResponse <IList <SourceSystem> > { IsValid = false }; this.mdmService.Setup(x => x.Search(search)).Returns(this.searchResult); // Act var result = this.cacheService.Search(search); // Assert Assert.AreEqual(this.searchResult, result); }
/// <copydocfrom cref="IMessageRequester.Search{T}" /> public PagedWebResponse <IList <TContract> > Search <TContract>(string uri, Search message) { Logger.DebugFormat("Start: MessageRequester.Search {0}", uri); var result = new PagedWebResponse <IList <TContract> > { Message = new List <TContract>(0) }; this.ResponseHandler( result, uri, client => { client.AddHeader(CoreConstants.UserNameHeader, GetUserName()); var content = new ObjectContent <Search>(message, new XmlMediaTypeFormatter()); using (var response = client.Post(uri, content)) { if (response.StatusCode == HttpStatusCode.OK) { Logger.Debug("MessageRequester.Search : Status OK - Reading the content from Response"); var settings = new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore }; Stream stream = null; var readTask = response.Content.ReadAsStreamAsync().ContinueWith(task => { if (task.Exception != null) { Logger.DebugFormat("MessageRequester.Search : Exception occurred while reading content asynchronously - {0}", task.Exception.Message); result.Code = HttpStatusCode.InternalServerError; result.IsValid = false; result.Fault = new Fault { Message = "Exception reading response stream : " + task.Exception.Message }; } else { stream = task.Result; } return(task); }); readTask.Wait(); if (stream != null) { var reader = XmlReader.Create(stream, settings); var feed = SyndicationFeed.Load(reader); if (feed == null) { result.Code = HttpStatusCode.InternalServerError; } else { Logger.Debug("MessageRequester.Search : Populating Message with the response received"); result.Message = feed.Items.Select(syndicationItem => (XmlSyndicationContent)syndicationItem.Content).Select(syndic => syndic.ReadContent <TContract>()).ToList(); result.Code = HttpStatusCode.OK; var nextPageLink = feed.Links.FirstOrDefault(syndicationLink => syndicationLink.RelationshipType == "next-results"); result.NextPage = nextPageLink == null ? null : nextPageLink.Uri; } } } else { result.Code = response.StatusCode; if (response.StatusCode == HttpStatusCode.NotFound) { result.IsValid = false; result.Message = new List <TContract>(); return; } result.IsValid = false; result.Fault = this.GetFault(response); } } }); Logger.DebugFormat("Finish: MessageRequester.Search {0}", uri); return(result); }