public void CreateMemberTestWithEmptyEmail()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();
            ICreateMemberModel model = mocks.StrictMock<ICreateMemberModel>();
            MembershipCreateStatus actual;
            MembershipCreateStatus expected = MembershipCreateStatus.InvalidEmail;

            using (mocks.Record())
            {
                //Validate user name
                Expect.Call(model.UserName).Return("test");

                Expect.Call(model.Password).Return("password");

                Expect.Call(model.Email).Return("");

            }

            MembersContainerService target = new MembersContainerService(provider);

            using (mocks.Playback())
            {
                actual = target.CreateMember(model);
            }

            Assert.AreEqual(expected, actual);
        }
        public void CreateMemberTestWithValidEmailAndProviderThrowException()
        {
            // Arrange
                MockRepository mocks = new MockRepository();
                IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();

                ICreateMemberModel model = mocks.StrictMock<ICreateMemberModel>();

                MembershipCreateStatus actual;

                using (mocks.Record())
                {
                    //Validate user name
                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return("*****@*****.**");

                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return("*****@*****.**");

                    Expect.Call(model.IsApproved).Return(false);

                    Expect.Call(provider.CreateMember("test", "password", "*****@*****.**",false)).Throw(new Exception());
                }

                MembersContainerService target = new MembersContainerService(provider);

                using (mocks.Playback())
                {
                    actual = target.CreateMember(model);
                }

                Assert.AreEqual(MembershipCreateStatus.ProviderError, actual);
        }
        public void CreateMemberTestWithValidEmailAndProviderSuccessResult()
        {
            String[] test = { "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**" };
            foreach (string it in test)
            {

                // Arrange
                MockRepository mocks = new MockRepository();
                IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();

                ICreateMemberModel model = mocks.StrictMock<ICreateMemberModel>();

                MembershipCreateStatus actual;
                MembershipCreateStatus expected = MembershipCreateStatus.Success;

                using (mocks.Record())
                {
                    //Validate user name
                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return(it);

                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return(it);

                    Expect.Call(model.IsApproved).Return(false);

                    Expect.Call(provider.CreateMember("test","password",it,false)).Return(MembershipCreateStatus.Success);
                }

                MembersContainerService target = new MembersContainerService(provider);

                using (mocks.Playback())
                {
                    actual = target.CreateMember(model);
                }

                Assert.AreEqual(expected, actual);
            }
        }
        public void CreateMemberTestWithValidEmailAndProviderErrorsResultValid()
        {
            MembershipCreateStatus[] test = {MembershipCreateStatus.DuplicateEmail,
                                            MembershipCreateStatus.DuplicateUserName,
                                            MembershipCreateStatus.InvalidEmail,
                                            MembershipCreateStatus.InvalidPassword,
                                            MembershipCreateStatus.InvalidUserName,
                                            MembershipCreateStatus.ProviderError,
                                            MembershipCreateStatus.UserRejected};
            foreach (MembershipCreateStatus it in test)
            {

                // Arrange
                MockRepository mocks = new MockRepository();
                IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();

                ICreateMemberModel model = mocks.StrictMock<ICreateMemberModel>();

                MembershipCreateStatus actual;

                using (mocks.Record())
                {
                    //Validate user name
                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return("*****@*****.**");

                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return("*****@*****.**");

                    Expect.Call(model.IsApproved).Return(false);

                    Expect.Call(provider.CreateMember("test", "password", "*****@*****.**",false)).Return(it);
                }

                MembersContainerService target = new MembersContainerService(provider);

                using (mocks.Playback())
                {
                    actual = target.CreateMember(model);
                }

                Assert.AreEqual(it, actual);
            }
        }
        public void CreateMemberTestWithNullModel()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();
            ICreateMemberModel model = null;
            MembershipCreateStatus actual;
            MembershipCreateStatus expected = MembershipCreateStatus.ProviderError;
            using (mocks.Record())
            {

            }

            MembersContainerService target = new MembersContainerService(provider);

            using (mocks.Playback())
            {
                actual = target.CreateMember(model);
            }

            Assert.AreEqual(expected,actual);
        }
        public void CreateMemberTestWithInvalidEmail()
        {
            String[] test =  {"test","test@","@.","@t.t","t@t","t.t@t","sdflkjfd34sdf@...."};
            foreach (string it in test)
            {

                // Arrange
                MockRepository mocks = new MockRepository();
                IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();

                ICreateMemberModel model = mocks.StrictMock<ICreateMemberModel>();

                MembershipCreateStatus actual;
                MembershipCreateStatus expected = MembershipCreateStatus.InvalidEmail;

                using (mocks.Record())
                {
                    //Validate user name
                    Expect.Call(model.UserName).Return("test");

                    Expect.Call(model.Password).Return("password");

                    Expect.Call(model.Email).Return(it);

                }

                MembersContainerService target = new MembersContainerService(provider);

                using (mocks.Playback())
                {
                    actual = target.CreateMember(model);
                }

                Assert.AreEqual(expected, actual);
            }
        }