public void Should_retrieve_data_from_petowner_api() { var path = ConfigurationManager.AppSettings["PetOwnerAPI.Url"]; var uri = new Uri(path); IJsonToPetOwnerConverter converter = new JsonToPetOwnerConverter(); var httpClient = new HttpClient(); IPetOwnerApiService apiService = new PetOwnerApiService(httpClient, uri); IPetFinder petFinder = new CatFinder(); IPetOwnerFinder petOwnerFinder = new PetOwnerFinder(); IPetOwnerFilter petOwnerFilter = new PetOwnerFilter(petOwnerFinder, petFinder); IComparer <string> comparer = new AlphabeticComparer(); IPetSorter petSorter = new PetNameAlphabeticalSorter(comparer); IPetOwnerGrouper grouper = new PetOwnerGrouper(); var apiClient = new PetOwnerApiClient.Client.PetOwnerApiClient(converter, apiService, petOwnerFilter, petSorter, grouper); var apiResult = apiClient.GetPetsByPetOwnerGender().Result; Assert.IsTrue(apiResult != null); Assert.IsTrue(string.IsNullOrEmpty(apiResult.Error)); if (apiResult.PetsByGender != null) { var distinctGenders = apiResult.PetsByGender.Select(x => x.Gender).Distinct().ToList(); var allGenders = apiResult.PetsByGender.Select(x => x.Gender).ToList(); Assert.IsTrue(distinctGenders.SequenceEqual(allGenders)); foreach (var pet in apiResult.PetsByGender) { Assert.IsTrue(pet.PetNames.Count() > 0); } } }
public void Should_return_error_json_when_api_service_throws_exception() { var fakeHttpMessageHandler = new Mock <FakeHttpMessageHandler> { CallBase = true }; var httpClient = new HttpClient(fakeHttpMessageHandler.Object); fakeHttpMessageHandler.Setup(f => f.Send(It.IsAny <HttpRequestMessage>())). Throws(new HttpRequestException()); var apiService = new PetOwnerApiService(httpClient, new Uri("http://localhost")); var actual = apiService.GetPetOwnerJson().Result; Assert.AreEqual("Error occured while communicating to Pet Owner Api.", actual.Error); }
public void Should_return_error_json_when_api_service_does_not_return_success() { var fakeHttpMessageHandler = new Mock <FakeHttpMessageHandler> { CallBase = true }; var httpClient = new HttpClient(fakeHttpMessageHandler.Object); fakeHttpMessageHandler.Setup(f => f.Send(It.IsAny <HttpRequestMessage>())).Returns(new HttpResponseMessage { StatusCode = HttpStatusCode.BadGateway, Content = new StringContent("{}") }); var apiService = new PetOwnerApiService(httpClient, new Uri("http://localhost")); var actual = apiService.GetPetOwnerJson().Result; Assert.AreEqual("Pet Owner Api could not respond with result.", actual.Error); }