public void Invoke_SaveChanges_When_UserFollowee_Exists()
        {
            //Arrange
            var fakeUnit             = new Mock <IUnitOfWork>();
            var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>();
            var fakeFolloweeService  = new Mock <IFolloweeService>();
            var fakeUserFolloweeRepo = new Mock <IGenericRepository <UserFollowee> >();
            var sut = new UserFolloweeService(fakeUnit.Object, fakeFolloweeService.Object, fakeDateTimeProvider);

            var userFollowee = new UserFollowee {
                UserId = "123", FolloweeId = "456"
            };
            var userFolloweeCollection = new List <UserFollowee> {
                userFollowee
            };

            fakeUserFolloweeRepo.Setup(s => s.All).Returns(userFolloweeCollection.AsQueryable);
            fakeUnit.Setup(u => u.UserFollowees).Returns(fakeUserFolloweeRepo.Object);
            fakeUnit.Setup(s => s.SaveChanges()).Verifiable();

            //Act
            sut.DeleteUserFollowee(userFollowee.UserId, userFollowee.FolloweeId);

            //Assert
            fakeUnit.Verify(v => v.SaveChanges(), Times.Once);
        }
        public void Throw_Argument_Null_Exception_When_FolloweeId_Is_Null()
        {
            //Arrange
            var fakeUnit             = Mock.Of <IUnitOfWork>();
            var fakeDateTimeProvider = Mock.Of <IDateTimeProvider>();
            var fakeFolloweeService  = Mock.Of <IFolloweeService>();

            var sut = new UserFolloweeService(fakeUnit, fakeFolloweeService, fakeDateTimeProvider);

            //Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() => sut.DeleteUserFollowee("123", null));
        }