Пример #1
0
        public async Task Index_ReturnsEmptyLists_WhenUpstreamDataIsEmpty()
        {
            mockHttpClient.GetAsync().ReturnsForAnyArgs(_ =>
            {
                return(Task.FromResult("[]"));
            });

            var personService     = new PersonService(mockHttpClient);
            var catsByGenderOwner = await personService.GetCatsByOwnerGenderAsync();

            catsByGenderOwner.Should().NotBeNull();
            catsByGenderOwner.CatsWithMaleOwners.Should().BeEmpty();
            catsByGenderOwner.CatsWithFemaleOwners.Should().BeEmpty();
        }
Пример #2
0
        /// <summary>
        /// Returns all the pets grouped by their owner gender
        /// </summary>
        /// <param name="petType">Can be one of the <see cref="AnimalType"/> values</param>
        /// <returns></returns>
        public async Task <PetsViewModel> GetPetsByOwnerGenderAsync(AnimalType petType)
        {
            var responseText = await client.GetAsync("people.json");

            var people = JsonConvert.DeserializeObject <IList <Person> >(responseText);

            var petsWithMaleOwners = people.Where(person => person.Gender == Gender.Male && person.Pets != null && person.Pets.Any(pet => pet.Type == petType))
                                     .SelectMany(owner => owner.Pets.Where(pet => pet.Type == petType))
                                     .OrderBy(pet => pet.Name);
            var petsWithFemaleOwners = people.Where(person => person.Gender == Gender.Female && person.Pets != null && person.Pets.Any(pet => pet.Type == petType))
                                       .SelectMany(owner => owner.Pets.Where(pet => pet.Type == petType))
                                       .OrderBy(pet => pet.Name);

            var model = new PetsViewModel(petsWithMaleOwners, petsWithFemaleOwners);

            return(model);
        }
        public async Task <HomeViewModel> GetCatsByOwnerGenderAsync()
        {
            var responseText = await _client.GetAsync();

            var people = JsonConvert.DeserializeObject <IEnumerable <Person> >(responseText);

            var model = new HomeViewModel
            {
                CatsWithMaleOwners = people
                                     .Where(person => person.Gender == Gender.Male && person.Pets != null && person.Pets.Any(pet => pet.Type == AnimalType.Cat))
                                     .SelectMany(owner => owner.Pets.Where(pet => pet.Type == AnimalType.Cat))
                                     .OrderBy(pet => pet.Name),

                CatsWithFemaleOwners = people
                                       .Where(person => person.Gender == Gender.Female && person.Pets != null && person.Pets.Any(pet => pet.Type == AnimalType.Cat))
                                       .SelectMany(owner => owner.Pets.Where(pet => pet.Type == AnimalType.Cat))
                                       .OrderBy(pet => pet.Name),
            };

            return(model);
        }