public void ShouldRejectAConstituentIfNotApproved()
        {
            var mail = MockRepository.GenerateMock<IMail>();
            var repository = MockRepository.GenerateMock<IRegisterationRepository>();
            var constituentRepository = MockRepository.GenerateMock<IConstituentRepository>(null);
            var emailServiceImpl = MockRepository.GenerateMock<IEmailServiceImpl>();
            var  phoneServiceImpl = MockRepository.GenerateMock<IPhoneServiceImpl>();
            var  addressServiceImpl = MockRepository.GenerateMock<IAddressServiceImpl>();
            var loginServiceImpl = MockRepository.GenerateMock<ILoginServiceImpl>();

            var registrationServiceImpl = new RegistrationServiceImpl(repository, constituentRepository, mail, emailServiceImpl, phoneServiceImpl, addressServiceImpl, loginServiceImpl);

            var existingConstituent = new Constituent {Id = 11};
            var newConstituent = new Constituent {Id = 12};
            var email = new Email { Address = "*****@*****.**" };
            var rejectReason = "Reject";
            var adminEmail = "*****@*****.**";

            constituentRepository.Stub(repository1 => repository1.Load(11)).Return(existingConstituent);
            constituentRepository.Stub(repository1 => repository1.Load(12)).Return(newConstituent);
            constituentRepository.Stub(repository1 => repository1.Delete(newConstituent.Id));
            emailServiceImpl.Stub(impl => impl.FindEmails(newConstituent.Id.ToString())).Return(new List<Email> {email});

            registrationServiceImpl.RegisterConstituent(11,12,false,adminEmail, false, rejectReason);

            emailServiceImpl.AssertWasCalled(impl => impl.FindEmails(newConstituent.Id.ToString()));
            mail.AssertWasCalled(mail1 => mail1.Send(email.Address, "Kallivayalil Account Activation Failed.", string.Format(@"Dear Ma'am/Sir , {0} The request you placed to activate
                                        your Kallivayalil account has been reject by the admn team.
                                        {0} The reason is as follows : {1}{0} For any further queries
                                        contact the admin team.{0} Reagards,{0} Admin Team", "\n", rejectReason)));
            mail.AssertWasCalled(mail1 => mail1.Send(adminEmail, "Kallivayalil Account Registration Rejected.", string.Format(@"Account-{0} has been rejected. Reason : {1}", email.Address,rejectReason)));
        }
        public void ShouldRegisterAConstituent()
        {
            var mail = MockRepository.GenerateMock<IMail>();
            var repository = MockRepository.GenerateMock<IRegisterationRepository>();
            var constituentRepository = MockRepository.GenerateMock<IConstituentRepository>(null);
            var emailServiceImpl = MockRepository.GenerateMock<IEmailServiceImpl>();
            var  phoneServiceImpl = MockRepository.GenerateMock<IPhoneServiceImpl>();
            var  addressServiceImpl = MockRepository.GenerateMock<IAddressServiceImpl>();
            var loginServiceImpl = MockRepository.GenerateMock<ILoginServiceImpl>();

            var registrationServiceImpl = new RegistrationServiceImpl(repository, constituentRepository, mail, emailServiceImpl, phoneServiceImpl, addressServiceImpl, loginServiceImpl);

            var existingConstituent = new Constituent {Id = 11};
            var newConstituent = new Constituent {Id = 12};
            var email = new Email { Address = "*****@*****.**" };
            var adminEmail = "*****@*****.**";

            constituentRepository.Stub(repository1 => repository1.Load(11)).Return(existingConstituent);
            constituentRepository.Stub(repository1 => repository1.Load(12)).Return(newConstituent);
            constituentRepository.Stub(repository1 => repository1.Update(existingConstituent)).Return(existingConstituent);
            constituentRepository.Stub(repository1 => repository1.Delete(newConstituent.Id));

            emailServiceImpl.Stub(impl => impl.SetConstituentAndUpdateEmail("12", existingConstituent));
            phoneServiceImpl.Stub(impl => impl.SetConstituentAndUpdatePhone("12", existingConstituent));
            addressServiceImpl.Stub(impl => impl.SetConstituentAndUpdateAddress("12", existingConstituent));
            loginServiceImpl.Stub(impl => impl.UpdateAsAdmin(false,existingConstituent.Id));
            emailServiceImpl.Stub(impl => impl.FindEmails(existingConstituent.Id.ToString())).Return(new List<Email> { email });

            mail.Stub(mail1 => mail1.Send(email.Address, "Kallivayalil Account Activated", "Your Account has been activated."));
            mail.Stub(mail1 => mail1.Send(adminEmail, "Kallivayalil Account Activated", string.Format("Account-{0} has been activated.", email.Address)));

            registrationServiceImpl.RegisterConstituent(11,12,false,adminEmail, true, "");

            emailServiceImpl.AssertWasCalled(impl => impl.SetConstituentAndUpdateEmail("12", existingConstituent));
            phoneServiceImpl.AssertWasCalled(impl => impl.SetConstituentAndUpdatePhone("12", existingConstituent));
            addressServiceImpl.AssertWasCalled(impl => impl.SetConstituentAndUpdateAddress("12", existingConstituent));
            loginServiceImpl.AssertWasCalled(impl => impl.UpdateAsAdmin(false, existingConstituent.Id));
            mail.AssertWasCalled(mail1 => mail1.Send(email.Address, "Kallivayalil Account Activated", "Your Account has been activated."));
            mail.AssertWasCalled(mail1 => mail1.Send(adminEmail, "Kallivayalil Account Activated", string.Format("Account-{0} has been activated.", email.Address)));
        }