public void TestUserBCCanSaveUserNoSOC()
        {
            // Pré condições (contexto)
            IUserInfo user = new UserInfo
                ("João", "Pinto", "jpinto", "senha");
            Assert.IsTrue(user.IsNew);
            Assert.AreEqual(UserInfo.NEW_OBJECT_ID, user.ID);

            UserDaoStub userDaoStub = new UserDaoStub();
            userDaoStub.UserResult = user;

            // Método a ser testado
            UserBC bcUser = new UserBC(userDaoStub);
            bcUser.SaveUser(user);

            // Verificação das pós-condições
            Assert.IsFalse(user.IsNew);
            Assert.IsTrue(user.ID != UserInfo.NEW_OBJECT_ID);
        }
        public void TestUserBCCanSaveUserWithMocks()
        {
            // Pré condições (contexto) - Arrange
            MockRepository mocks = new MockRepository();
            IUserInfo mockUser = mocks.StrictMock<IUserInfo>();
            IUserDao mockUserDao = mocks.StrictMock<IUserDao>();

            // Expectativas
            Expect.Call(mockUser.IsNew).Return(true);
            Expect.Call(mockUser.Validate()).Return(true);
            Expect.Call(delegate { mockUserDao.Insert(mockUser); });
            mocks.ReplayAll();

            // Método a ser testado - Act
            UserBC bcUser = new UserBC(mockUserDao);
            bcUser.SaveUser(mockUser);

            // Verificação das pós-condições - Assert
            mocks.VerifyAll();
        }
        public void Should_udpate_existing_user()
        {
            // Arrange
            IUserInfo mockUser = mocks.Stub<IUserInfo>();
            IUserDao mockUserDao = mocks.StrictMock<IUserDao>();
            mockUser.IsNew = false;
            Expect.Call(delegate { mockUserDao.Update(mockUser); });

            // Act
            mocks.ReplayAll();
            UserBC bcUser = new UserBC(mockUserDao);
            bcUser.SaveUser(mockUser);

            // Assert
            mocks.VerifyAll();
        }
        public void Should_validate_user()
        {
            // Arrange
            IUserInfo mockUser = mocks.StrictMock<IUserInfo>();
            IUserDao mockUserDao = mocks.Stub<IUserDao>();
            SetupResult.For(mockUser.IsNew).Return(true);
            Expect.Call(mockUser.Validate()).Return(true);

            // Act
            mocks.ReplayAll();
            UserBC bcUser = new UserBC(mockUserDao);
            bcUser.SaveUser(mockUser);

            // Assert
            mocks.VerifyAll();
        }
        public void Should_insert_new_user()
        {
            // Arrange
            IUserInfo mockUser = mocks.Stub<IUserInfo>();
            IUserDao mockUserDao = mocks.StrictMock<IUserDao>();
            mockUser.IsNew = true;
            Expect.Call(delegate { mockUserDao.Insert(mockUser); });

            // Act
            mocks.ReplayAll();
            UserBC bcUser = new UserBC(mockUserDao);
            bcUser.SaveUser(mockUser);

            // Assert
            mocks.VerifyAll();
        }