public void GetPetsByOwnersGender_WhenQueriedByGender_ReturnsFilteredResult_OrderedByName(string gender)
        {
            var service = new GetPetsByOwnersGenderService(new LoggerFactory(), _mockRepository.Object);

            var response = service.Invoke(new GetCatsByOwnersGenderRequest
            {
                OwnerGender = gender
            });

            foreach (var petsByGender in response.CatsByOwnersGenders)
            {
                var catNames = petsByGender.Cats.ToList();

                Assert.Equal(3, catNames.Count);

                if (petsByGender.OwnerGender == "Male")
                {
                    Assert.Equal("Garfield", catNames[0]);
                    Assert.Equal("Max", catNames[1]);
                    Assert.Equal("Tom", catNames[2]);
                }
                else
                {
                    Assert.Equal("Garfield", catNames[0]);
                    Assert.Equal("Simba", catNames[1]);
                    Assert.Equal("Tabby", catNames[2]);
                }
            }
        }
        public void GetPetsByOwnersGender_GivenNoCats_WhenQueriedByGender_ReturnsEmptyList(string gender)
        {
            var mockRepository = new Mock <IRepository <Owner> >();

            mockRepository.Setup(x => x.GetAll()).Returns(new List <Owner>
            {
                new Owner
                {
                    Name   = "Bob",
                    Gender = "Male",
                    Age    = 23,
                    Pets   = new List <Pet>
                    {
                        new Pet
                        {
                            Name = "Sam",
                            Type = "Dog"
                        }
                    }
                },
                new Owner
                {
                    Name   = "Jennifer",
                    Gender = "Female",
                    Age    = 18,
                    Pets   = new List <Pet>
                    {
                    }
                },
                new Owner
                {
                    Name   = "Fred",
                    Gender = "Male",
                    Age    = 40,
                    Pets   = null
                }
            });

            var service = new GetPetsByOwnersGenderService(new LoggerFactory(), mockRepository.Object);

            var response = service.Invoke(new GetCatsByOwnersGenderRequest
            {
                OwnerGender = gender
            });

            foreach (var petsByGender in response.CatsByOwnersGenders)
            {
                var pets = petsByGender.Cats.ToList();

                Assert.Empty(pets);
            }
        }