/// <summary>
 /// Parameterized Constructor
 /// </summary>
 public RegistrationApplicationService(IIdentityAccessPersistenceRepository persistenceRepository,
                                       IPasswordEncryptionService passwordEncryptionService, IActivationKeyGenerationService activationKeyGenerationService
                                       , IEmailService emailService, ITierRepository tierRepository, IUserRepository userRepository)
 {
     _persistenceRepository          = persistenceRepository;
     _passwordEncryptionService      = passwordEncryptionService;
     _activationKeyGenerationService = activationKeyGenerationService;
     _emailService   = emailService;
     _tierRepository = tierRepository;
     _userRepository = userRepository;
 }
        public void CreateAccount_IfAccountIsCreatedSuccessfully_AllTierLevelsShouldBeAssignedAndAreNonVerified()
        {
            IRegistrationApplicationService registrationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository userRepository =
                (IUserRepository)_applicationContext["UserRepository"];
            ITierRepository tierRepository =
                (ITierRepository)_applicationContext["TierRepository"];
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);
            string           activationKey    = registrationService.CreateAccount(new SignupUserCommand(
                                                                                      "*****@*****.**", "Bob", "iamnotalice", "Wonderland", TimeZone.CurrentTimeZone, ""));

            // Wait for the email to be sent
            manualResetEvent.WaitOne(5000);
            User receivedUser = userRepository.GetUserByUserName("Bob");

            Assert.NotNull(receivedUser);
            IList <Tier> tiers = tierRepository.GetAllTierLevels();

            for (int i = 0; i < tiers.Count; i++)
            {
                Assert.AreEqual(receivedUser.GetTierLevelStatus(tiers[i]), Status.NonVerified.ToString());
            }
        }