Ejemplo n.º 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);
                }
            }
        }
        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);
        }