public void GetPetsByOwnerGenderGroupCount()
        {
            // Arrange
            var mockProvider   = new MockProvider();
            var mockRepository = new Mock <IPetOwnerRepository>();

            mockRepository.Setup(p => p.GetAllPetOwnerDetails()).Returns(mockProvider.GetMockPetOwnerResult());
            var petService = new PetOwnerService(mockRepository.Object);

            // Act
            var result = petService.GetPetDetailsByGenderGroup(PetType.Cat);

            // Assert
            Assert.AreEqual(result.Count, 2);
        }
        public void GetPetsByOwnerGenderEachGenderGroupAvailable()
        {
            // Arrange
            var mockProvider   = new MockProvider();
            var mockRepository = new Mock <IPetOwnerRepository>();

            mockRepository.Setup(p => p.GetAllPetOwnerDetails()).Returns(mockProvider.GetMockPetOwnerResult());
            var petService = new PetOwnerService(mockRepository.Object);

            // Act
            var result = petService.GetPetDetailsByGenderGroup(PetType.Cat);

            // Assert
            Assert.IsTrue(result.Any(r => r.GroupName == Constants.Gender.Male.ToString()));
            Assert.IsTrue(result.Any(r => r.GroupName == Constants.Gender.Female.ToString()));
        }
        public void TestEmptyPetListExistsForSingleGroup()
        {
            // Arrange
            var mockProvider   = new MockProvider();
            var mockRepository = new Mock <IPetOwnerRepository>();

            mockRepository.Setup(p => p.GetAllPetOwnerDetails()).Returns(mockProvider.GetMockPetOwnerSingleNullPetArrayResult());
            var petService = new PetOwnerService(mockRepository.Object);

            // Act
            var result            = petService.GetPetDetailsByGenderGroup(PetType.Cat);
            var maleGroupPetNames = result.Where(r => r.GroupName == Constants.Gender.Male.ToString()).SelectMany(m => m.PetNames);

            // Assert
            Assert.AreEqual(maleGroupPetNames.Count(), 0);
        }
        public void TestOrderSequenceOfPetsForMaleOwner(int index)
        {
            // Arrange
            var mockProvider   = new MockProvider();
            var mockRepository = new Mock <IPetOwnerRepository>();

            mockRepository.Setup(p => p.GetAllPetOwnerDetails()).Returns(mockProvider.GetMockPetOwnerResult());
            var petService = new PetOwnerService(mockRepository.Object);

            // Act
            var result = petService.GetPetDetailsByGenderGroup(PetType.Cat);

            Assert.IsNotNull(result);
            var petNames       = result.Where(r => r.GroupName == Constants.Gender.Male.ToString()).SelectMany(p => p.PetNames);
            var expectedResult = mockProvider.GetMockPetGroup().Where(r => r.GroupName == Constants.Gender.Male.ToString()).SelectMany(m => m.PetNames);

            // Assert
            Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(petNames.ElementAt(index), expectedResult.ElementAt(index));
        }