public void Save_ThrowsExceptionOnSave_SavesLog()
        {
            var user = new User()
            {
                Name  = "John",
                Email = "*****@*****.**"
            };

            var exception = new Exception("Fail to connect to database");

            var emailValidation = MockRepository.GenerateStub <IEmailValidation>();
            var userRepository  = MockRepository.GenerateStub <IUserRepository>();
            var logService      = MockRepository.GenerateMock <ILogService>();

            emailValidation.Stub(p => p.isValid(It.IsAny <string>())).Return(true);
            userRepository.Stub(p => p.Save(It.Is <User>(u => u.Equals(user)))).Throw(exception);
            logService.Expect(p => p.LogError(It.Is <Exception>(e => e.Equals(exception))));

            var userService = new UserService(userRepository, emailValidation);

            userService.LogService = logService;

            userService.Save(user);

            userRepository.VerifyAllExpectations();
        }
        public void IsMockableWithRhino()
        {
            var paletteHelper = MockRepository.GenerateStub <PaletteHelper>();

            paletteHelper.SetLightDark(true);

            paletteHelper.AssertWasCalled(ph => ph.SetLightDark(true));
        }
        public void Save_InvalidEmail_ThrowsException()
        {
            var user = new User()
            {
                Name  = "John",
                Email = "email"
            };

            var emailValidation = MockRepository.GenerateStub <IEmailValidation>();

            emailValidation.Stub(p => p.isValid(It.IsAny <string>())).Return(false);

            var userService = new UserService(null, emailValidation);

            Assert.Throws(typeof(ArgumentException), () => userService.Save(user), "Email is invalid");
        }
        public void Save_ValidUser_Success()
        {
            var user = new User()
            {
                Name  = "John",
                Email = "*****@*****.**"
            };

            var emailValidation = MockRepository.GenerateStub <IEmailValidation>();
            var userRepository  = MockRepository.GenerateMock <IUserRepository>();

            emailValidation.Stub(p => p.isValid(It.IsAny <string>())).Return(true);
            userRepository.Expect(p => p.Save(It.Is <User>(u => u.Equals(user))));

            var userService = new UserService(userRepository, emailValidation);

            userService.Save(user);

            userRepository.VerifyAllExpectations();
        }