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_headings_male_and_female_when_pet_owners_are_male_and_female() { var grouper = new PetOwnerGrouper(); var pets1 = new List <Pet>(); pets1.Add(new Pet { Name = "Fido", Type = "Dog" }); var petowner1 = new PetOwner { Age = 20, Name = "Jack", Gender = "Male", Pets = pets1 }; var pets2 = new List <Pet>(); pets2.Add(new Pet { Name = "Blackie", Type = "Dog" }); var petowner2 = new PetOwner { Age = 21, Name = "Jane", Gender = "Female", Pets = pets2 }; var pets3 = new List <Pet>(); pets3.Add(new Pet { Name = "Garfield", Type = "Cat" }); var petowner3 = new PetOwner { Age = 23, Name = "Jill", Gender = "Female", Pets = pets2 }; var owners = new List <PetOwner> { petowner1, petowner2, petowner3 }; var actual = grouper.GetGroup(owners); var expected = new List <string>() { "Male", "Female" }; Assert.AreEqual(true, actual.SequenceEqual(expected)); }