public void CallsCreateEmployee_IfEmployeeKeyIsEmpty()
            {
                // Arrange
                MockEmployeesService.Setup(m => m.CreateEmployee(It.IsAny <ICreateEmployeeParameters>()))
                .Returns(new SuccessResult <string>());

                RegisterParameters.EmployeeKey = string.Empty;

                // Act
                var result = SystemUnderTest.Register(RegisterParameters);

                // Assert
                MockEmployeesService.Verify(m => m.CreateEmployee(It.IsAny <ICreateEmployeeParameters>()),
                                            Times.Once());
            }
            public void ReturnsViewResultInInvalidState_IfEmployeeKeyProvidedIsInvalid()
            {
                // Arrange
                MockEmployeesService.Setup(m => m.GetEmployeeDetailsByUserName(RegisterParameters.UserName))
                .Returns(new InvalidResult <IEmployeeDetailsReturn>());

                // Act
                var result = SystemUnderTest.Register(RegisterParameters) as ViewResult;

                // Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(MVC.Security.Views.Register, result.ViewName);
                Assert.IsFalse(SystemUnderTest.ModelState.IsValid);
                MockEmployeesService.Verify(
                    m => m.ActivateEmployee(It.IsAny <IActivateEmployeeParameters>()),
                    Times.Never());
            }
            public void SetsEmployeeEmailAddress_IfEmployeeKeyIsProvided()
            {
                // Arrange
                IActivateEmployeeParameters actualUpdateValues = null;

                MockEmployeesService.Setup(m => m.ActivateEmployee(It.IsAny <IActivateEmployeeParameters>()))
                .Callback((IActivateEmployeeParameters input) => actualUpdateValues = input)
                .Returns(new SuccessResult());

                // Act
                SystemUnderTest.Register(RegisterParameters);

                // Assert
                Assert.IsNotNull(actualUpdateValues);
                Assert.AreEqual(RegisterParameters.Email, actualUpdateValues.EmailAddress);
                MockEmployeesService.Verify(m => m.ActivateEmployee(It.IsAny <IActivateEmployeeParameters>()), Times.Once());
            }
            public void ReturnsViewResultInInvalidState_IfUserNameIsInvalidForEmployeeKey()
            {
                // Arrange
                RegisterParameters.EmployeeKey = "InvalidEmployeeKey";

                // Act
                var result = SystemUnderTest.Register(RegisterParameters) as ViewResult;

                // Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(MVC.Security.Views.Register, result.ViewName);
                Assert.IsFalse(SystemUnderTest.ModelState.IsValid);
                MockEmployeesService.Verify(
                    m => m.GetEmployeeDetailsByUserName(RegisterParameters.UserName),
                    Times.Once());
                MockEmployeesService.Verify(
                    m => m.CreateEmployee(It.IsAny <ICreateEmployeeParameters>()),
                    Times.Never());
            }
            public void ReturnsViewResultInInvalidState_IfEmployeeKeyIsEmptyAndServiceResultIsUnsuccessful()
            {
                // Arrange
                MockEmployeesService.Setup(m => m.CreateEmployee(It.IsAny <ICreateEmployeeParameters>()))
                .Returns(new FailureResult <string>());

                RegisterParameters.EmployeeKey = string.Empty;

                // Act
                var result = SystemUnderTest.Register(RegisterParameters) as ViewResult;

                // Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(MVC.Security.Views.Register, result.ViewName);
                Assert.IsFalse(SystemUnderTest.ModelState.IsValid);
                MockEmployeesService.Verify(
                    m => m.CreateEmployee(It.IsAny <ICreateEmployeeParameters>()),
                    Times.Once());
            }