public void ToSearchIllnessesResponse_Should_Map_Correctly() { var source = new IllnessesResponse { _embedded = new IllnessesObject { Illnesses = new [] { new AzureIllness { Illness = new IllnessObject { Id = 1 } }, new AzureIllness { Illness = new IllnessObject { Id = 2 } }, new AzureIllness { Illness = new IllnessObject { Id = 3 } } } }, Page = new PageObject { Number = 123 } }; var actual = source.ToSearchIllnessesResponse(); actual.Data.Should().HaveSameCount(source._embedded.Illnesses); actual.CurrentPageIndex.Should().Be(source.Page.Number); }
public void ToSearchIllnessesResponse_Should_Handle_Null() { IllnessesResponse source = null; var actual = source.ToSearchIllnessesResponse(); actual.Should().BeNull(); }
public void ToSearchIllnessesResponse_Should_Handle_Null_Embedded() { var source = new IllnessesResponse(); var actual = source.ToSearchIllnessesResponse(); actual.Should().BeNull(); }
public async void SearchIllnesses_Should_Call_IRequestProvider_CreateGetRequest_Until_There_Are_No_More_Pages() { var request = new HttpRequestMessage(); _requestProvider.CreateGetRequest(Arg.Any <string>()).Returns(request); var embedded = new IllnessesObject { Illnesses = new [] { new AzureIllness { Illness = new IllnessObject { Name = "aaa" } } } }; var withNext = new LinksObject { Next = new LinkObject { Href = "nextUrl" } }; var withoutNext = new LinksObject { Next = new LinkObject() }; var response1 = new IllnessesResponse { _embedded = embedded, _links = withNext }; var response2 = new IllnessesResponse { _embedded = embedded, _links = withNext }; var response3 = new IllnessesResponse { _embedded = embedded, _links = withoutNext }; _apiClient.Send(Arg.Any <HttpRequestMessage>(), Arg.Any <Func <HttpResponseMessage, Task <IllnessesResponse> > >()).Returns(response1, response2, response3); var url = $"{_database}/illnesses"; var search = new SearchIllnessesRequest { IllnessName = "aa" }; await _repository.SearchIllnesses(search); _requestProvider.Received(1).CreateGetRequest(url); _requestProvider.Received(2).CreateGetRequest(withNext.Next.Href); request.Dispose(); }
public static SearchIllnessesResponse ToSearchIllnessesResponse(this IllnessesResponse source) { if (source == null || source._embedded == null) { return(null); } var response = new SearchIllnessesResponse { Data = source._embedded.Illnesses.ToIllnessDetailsList(), }; return(response.PopulatePageDetails(source.Page)); }
public async void SearchIllnesses_Should_Call_Return_Correctly() { var request = new HttpRequestMessage(); _requestProvider.CreateGetRequest(Arg.Any <string>()).Returns(request); var response = new IllnessesResponse { _embedded = new IllnessesObject { Illnesses = new [] { new AzureIllness { Illness = new IllnessObject { Id = 1 } }, new AzureIllness { Illness = new IllnessObject { Id = 2 } }, new AzureIllness { Illness = new IllnessObject { Id = 3 } } } }, Page = new PageObject { Number = 123, Size = 456, TotalElements = 789, TotalPages = 111 } }; var expected = response.ToSearchIllnessesResponse(); _apiClient.Send(Arg.Any <HttpRequestMessage>(), Arg.Any <Func <HttpResponseMessage, Task <IllnessesResponse> > >()).Returns(response); var actual = await _repository.SearchIllnesses(new SearchIllnessesRequest()); actual.Should().BeEquivalentTo(expected); request.Dispose(); }
public async void SearchIllnesses_Should_Call_IApiClient_Send() { Func <HttpResponseMessage, Task <IllnessesResponse> > mapper = null; var request = new HttpRequestMessage(); _requestProvider.CreateGetRequest(Arg.Any <string>()).Returns(request); await _apiClient.Send(Arg.Any <HttpRequestMessage>(), Arg.Do <Func <HttpResponseMessage, Task <IllnessesResponse> > >(a => mapper = a)); await _repository.SearchIllnesses(new SearchIllnessesRequest()); await _apiClient.Received(1).Send <IllnessesResponse>(request, Arg.Any <Func <HttpResponseMessage, Task <IllnessesResponse> > >()); var expected = new IllnessesResponse { _embedded = new IllnessesObject { Illnesses = new [] { new AzureIllness { Illness = new IllnessObject { Id = 1 } } } }, Page = new PageObject { Number = 123 } }; var body = JObject.FromObject(expected); var response = new HttpResponseMessage(); response.Content = new StringContent(body.ToString()); var actual = await mapper(response); actual.Should().BeEquivalentTo(expected); request.Dispose(); }
public async void SearchIllnesses_Should_Call_IRequestProvider_CreateGetRequest_Until_Page_Is_Full(string name, int expectedExtraCall) { var request = new HttpRequestMessage(); _requestProvider.CreateGetRequest(Arg.Any <string>()).Returns(request); var response = new IllnessesResponse { _embedded = new IllnessesObject { Illnesses = new [] { new AzureIllness { Illness = new IllnessObject { Name = "aza" } }, new AzureIllness { Illness = new IllnessObject { Name = "zao" } }, new AzureIllness { Illness = new IllnessObject { Name = "2za" } }, new AzureIllness { Illness = new IllnessObject { Name = "aaz" } }, new AzureIllness { Illness = new IllnessObject { Name = "zae" } }, new AzureIllness { Illness = new IllnessObject { Name = "Zqw" } }, new AzureIllness { Illness = new IllnessObject { Name = "eZr" } }, new AzureIllness { Illness = new IllnessObject { Name = "zzZ" } }, new AzureIllness { Illness = new IllnessObject { Name = "jkz" } }, new AzureIllness { Illness = new IllnessObject { Name = "zop" } } } }, _links = new LinksObject { Next = new LinkObject { Href = "nextUrl" } } }; _apiClient.Send(Arg.Any <HttpRequestMessage>(), Arg.Any <Func <HttpResponseMessage, Task <IllnessesResponse> > >()).Returns(response); var url = $"{_database}/illnesses"; var search = new SearchIllnessesRequest { IllnessName = name }; await _repository.SearchIllnesses(search); _requestProvider.Received(1).CreateGetRequest(url); _requestProvider.Received(expectedExtraCall).CreateGetRequest(response._links.Next.Href); request.Dispose(); }