public void Return_Fasle_IfTheEmailisUnique()
        {
            var    mockedUserRepo = new Mock <IRepository <User> >();
            var    mockedUoW      = new Mock <Func <IUnitOfWork> >();
            var    service        = new AccountManagementService(mockedUserRepo.Object, mockedUoW.Object);
            string email          = "*****@*****.**";

            var users = new List <User>()
            {
                new User()
                {
                    Email = email
                }
            };

            mockedUserRepo.Setup(x => x.GetAll(It.IsAny <Expression <Func <User, bool> > >(), It.IsAny <Expression <Func <User, string> > >()))
            .Returns(
                (Expression <Func <User, bool> > predicate, Expression <Func <User, string> > select) =>
                users.Where(predicate.Compile())
                .Select(select.Compile()));

            var result = service.IsEmailUnique(email);

            Assert.IsFalse(result);
        }
        public void Throw_ArgumentNullException_WithMsgCointainEmail_WhenEmailIsNull()
        {
            var mockedUserRepo = new Mock <IRepository <User> >();
            var mockedUoW      = new Mock <Func <IUnitOfWork> >();
            var service        = new AccountManagementService(mockedUserRepo.Object, mockedUoW.Object);

            Assert.That(() => service.IsEmailUnique(null),
                        Throws.ArgumentNullException.With.Message.Contain("email"));
        }
        public void CallGetAllMethod_FromUserRepo_Once(string email)
        {
            var mockedUserRepo = new Mock <IRepository <User> >();
            var mockedUoW      = new Mock <Func <IUnitOfWork> >();
            var service        = new AccountManagementService(mockedUserRepo.Object, mockedUoW.Object);

            service.IsEmailUnique(email);

            mockedUserRepo.Verify(x => x.GetAll(It.IsAny <Expression <Func <User, bool> > >(), It.IsAny <Expression <Func <User, string> > >()), Times.Once);
        }