public void Employee_Must_Be_18()
        {
            // Test
            MvcArch.Domain.Employee emp = new MvcArch.Domain.Employee { FirstName = "First", BirthDate = DateTime.Today.AddYears(-5)};

            List<ValidationResult> results = emp.Validate(new ValidationContext(emp, null, null)).ToList();
            Assert.That(results, Has.Count.EqualTo(1));
            Assert.That(results.First(), Has.Property("ErrorMessage").StringContaining("18 ans"));

            emp.BirthDate = emp.BirthDate.AddYears(-13);
            results = emp.Validate(new ValidationContext(emp, null, null)).ToList();
            Assert.That(results, Has.Count.EqualTo(0));
        }
        public void Login_Must_Be_Unique()
        {
            // Arrange repository
            Mock<IRepository<Employee>> repo = new Mock<IRepository<Employee>>();
            repo.Setup(rr => rr.Find(It.IsAny<Expression<Func<Employee, bool>>>()))
                .Returns(
                    (Expression<Func<Employee, bool>> expr, Expression<Func<Employee, object>>[] includeProperties) =>
                    _list.Where(expr.Compile()));

            // Arrange unit of work
            Mock<IUnitOfWork> uow = new Mock<IUnitOfWork>();

            // Arrange service
            Mock<EmployeeService> service = new Mock<EmployeeService>(repo.Object, uow.Object) {CallBase = true};

            // Test
            MvcArch.Domain.Employee domainEmp = new MvcArch.Domain.Employee { FirstName = "New First", LastName = "New Last", BirthDate = new DateTime(1970, 1, 1), Login = "******", Id = -1 };
            Assert.Throws<BusinessRuleException>(() => service.Object.Add(domainEmp));
        }