示例#1
0
        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);
                }
            }
        }
示例#2
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));
        }