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 UpdateMemberTestWithOneLetterUserNameAndValidNewEmailAndProviderTrueResult()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();
            IUpdateMemberModel model = mocks.StrictMock<IUpdateMemberModel>();

            bool expected = true;

            bool actual;

            using (mocks.Record())
            {
                Expect.Call(model.UserName).Return("t");
                Expect.Call(model.NewEmail).Return("*****@*****.**");

                Expect.Call(model.UserName).Return("t");
                Expect.Call(model.NewEmail).Return("*****@*****.**");
                Expect.Call(model.NewIsApproved).Return(true);
                Expect.Call(provider.UpdateMember("t", "*****@*****.**", true)).Return(true);
            }

            MembersContainerService target = new MembersContainerService(provider);

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

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

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

                bool expected = false;

                bool actual;

                using (mocks.Record())
                {
                    Expect.Call(model.UserName).Return("t");
                    Expect.Call(model.NewEmail).Return(it);

                    Expect.Call(model.UserName).Return("t");
                    Expect.Call(model.NewEmail).Return(it);
                    Expect.Call(model.NewIsApproved).Return(false);
                    Expect.Call(provider.UpdateMember("t",it,false)).Return(false);
                }

                MembersContainerService target = new MembersContainerService(provider);

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

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

            bool expected = false;
            bool actual;

            using (mocks.Record())
            {
                Expect.Call(model.UserName).Return("t");
                Expect.Call(model.NewEmail).Return(null);
            }

            MembersContainerService target = new MembersContainerService(provider);

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

            Assert.AreEqual(expected, actual);
        }
        public void UpdateMemberTestWithOneLetterUserNameAndInvalidNewEmail()
        {
            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>();
                IUpdateMemberModel model = mocks.StrictMock<IUpdateMemberModel>();

                bool expected = false;

                bool actual;

                using (mocks.Record())
                {
                    Expect.Call(model.UserName).Return("t");
                    Expect.Call(model.NewEmail).Return(it);
                }

                MembersContainerService target = new MembersContainerService(provider);

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

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

            IQueryable<ISymNetMemberModel> actual;

            using (mocks.Record())
            {
                Expect.Call(provider.ListMembers()).Return(null);
            }

            MembersContainerService target = new MembersContainerService(provider);

            using (mocks.Playback())
            {
                actual = target.ListMembers();
            }
            Assert.IsNotNull(actual);
            Assert.AreEqual(0, actual.Count());
        }
        public void DeleteMemberTestWithSpaceUserName()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IMembershipProvider provider = mocks.StrictMock<IMembershipProvider>();
            String username = "******";

            bool actual;
            bool expected = false;

            using (mocks.Record())
            {

            }

            MembersContainerService target = new MembersContainerService(provider);

            using (mocks.Playback())
            {
                actual = target.DeleteMember(username);
            }

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

            bool actual;
            bool expected = true;

            using (mocks.Record())
            {
                Expect.Call(provider.DeleteMember(username)).Return(expected);
            }

            MembersContainerService target = new MembersContainerService(provider);

            using (mocks.Playback())
            {
                actual = target.DeleteMember(username);
            }

            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);
            }
        }