Mercurial > silverbladetech
diff SilverlightValidation/SilverlightValidation.Tests/ViewModels/UserViewModelFixture.cs @ 102:db05a55e3536
INPC tests added
author | stevenhollidge <stevenhollidge@hotmail.com> |
---|---|
date | Sun, 06 May 2012 12:13:29 +0100 |
parents | SilverlightValidation/SilverlightValidation.Tests/ViewModels/UserViewModelTests.cs@d0c2cac12376 |
children | 62477c2e8837 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SilverlightValidation/SilverlightValidation.Tests/ViewModels/UserViewModelFixture.cs Sun May 06 12:13:29 2012 +0100 @@ -0,0 +1,185 @@ +using System; +using FluentAssertions.EventMonitoring; +using NUnit.Framework; +using SilverlightValidation.Models; +using SilverlightValidation.Tests.Fakes; +using SilverlightValidation.Validators; +using SilverlightValidation.ViewModels; + +namespace SilverlightValidation.Tests.ViewModels +{ + [TestFixture] + class UserViewModelFixture + { + #region Constructor + + [Test] + public void WhenConstructed_WithTwoNulls_ThenArgumentNullExceptionForModel() + { + Assert.Throws<ArgumentNullException>(() => new UserViewModel(null, null), "model"); + } + + [Test] + public void WhenConstructed_WithNullFirstParam_ThenArgumentNullExceptionForModel() + { + Assert.Throws<ArgumentNullException>(() => new UserViewModel(null, UserModelValidator.Create()), "model"); + } + + [Test] + public void WhenConstructed_WithNullSecondParam_ThenArgumentNullExceptionForValidator() + { + Assert.Throws<ArgumentNullException>(() => new UserViewModel(UserModel.Create(), null), "validator"); + } + + [Test] + public void WhenConstructed_WithGenericParams_ThenInstantiatesViewModel() + { + var vm = new UserViewModel(UserModel.Create(), UserModelValidator.Create()); + Assert.IsNotNull(vm); + } + + #endregion + + #region INotifyPropertyChanged + + [Test] + public void WhenPropertyChanged_WithValidDateOfBirthUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.DateOfBirth = new DateTime(1977, 01, 01); + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.DateOfBirth); + Assert.IsTrue(vm.IsChanged); + } + + + [Test] + public void WhenPropertyChanged_WithInvalidDateOfBirthUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.DateOfBirth = new DateTime(1800, 01, 01); + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.DateOfBirth); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithDescriptionUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Description = "New description"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Description); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithValidEmailUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Email = "test@domain.com"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Email); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithInvalidEmailUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Email = "invalid email"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Email); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithValidUsernameUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Username = "dummy"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Username); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithInvalidUsernameUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Username = "invalidusernametoolong"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Username); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithValidPasswordUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Password = "dummy"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Password); + Assert.IsTrue(vm.IsChanged); + } + + [Test] + public void WhenPropertyChanged_WithInvalidPasswordUpdated_ThenFiresChangeEventAndIsChangedEqualsTrue() + { + // arrange + var vm = CreateDefaultUserViewModel(); + + // act + vm.Password = "invalidpasswordtoolong"; + + // assert + vm.ShouldRaisePropertyChangeFor(x => x.Password); + Assert.IsTrue(vm.IsChanged); + } + + #endregion + + #region Helpers + + private static UserViewModel CreateDefaultUserViewModel() + { + var vm = new UserViewModel(UserModel.Create(), UserModelValidatorFake.Create()); + vm.MonitorEvents(); + return vm; + } + + #endregion + } +}