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(); }
/// <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); }