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_correct_result_when_input_Json_is_valid() { var json = @"[{""name"":""Bob"", ""gender"":""Male"", ""age"": 23 ,""pets"": [{""name"":""Garfield"", ""type"":""Cat""}, {""name"":""Fido"", ""type"":""Dog""}]}, {""name"":""Jennifer"", ""gender"":""Female"", ""age"": 18 ,""pets"": [{""name"":""Garfield"", ""type"":""Cat""}]}] "; var converter = new JsonToPetOwnerConverter(); var result = converter.Convert(json); var pets1 = new List <Pet>(); pets1.Add(new Pet { Name = "Garfield", Type = "Cat" }); pets1.Add(new Pet { Name = "Fido", Type = "Dog" }); var petowner1 = new PetOwner { Age = 23, Name = "Bob", Gender = "Male", Pets = pets1 }; var pets2 = new List <Pet>(); pets2.Add(new Pet { Name = "Garfield", Type = "Cat" }); var petowner2 = new PetOwner { Age = 18, Name = "Jennifer", Gender = "Female", Pets = pets2 }; Assert.AreEqual(petowner1.Name, result.PetOwners[0].Name); Assert.AreEqual(petowner1.Age, result.PetOwners[0].Age); Assert.AreEqual(petowner1.Gender, result.PetOwners[0].Gender); }