コード例 #1
0
        public void ShouldNotRaisePropertyChangedEventIfPorpertyIsSetSomeValue()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "FirstName")
                {
                    fired = true;
                }
            };
            wrapper.FirstName = "Thomas";
            Assert.IsFalse(fired);
        }
コード例 #2
0
        public void ShouldSetIsChanged()
        {
            var wrapper = new FriendWrapper(_friend);

            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);

            wrapper.FirstName = "Julia";
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.FirstName = "Thomas";
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
コード例 #3
0
        public void ShouldRaisePropertyChangedEventOnPorpertyChange()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "FirstName")
                {
                    fired = true;
                }
            };
            wrapper.FirstName = "Julia";
            Assert.IsTrue(fired);
        }
        public void ShouldRejectChanges()
        {
            FriendWrapper wrapper = new FriendWrapper(_friend);

            FriendEmailWrapper emailToModify = wrapper.Emails.First();

            emailToModify.Email = "*****@*****.**";

            Assert.IsTrue(wrapper.IsChanged);

            wrapper.RejectChanges();

            Assert.IsFalse(wrapper.IsChanged);
            Assert.AreEqual("*****@*****.**", emailToModify.Email);
            Assert.AreEqual("*****@*****.**", emailToModify.EmailOriginalValue);
        }
コード例 #5
0
        public void ShouldRaisePropertyChangedEventForIsChangedPropertyOfFriendWrapper()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(wrapper.IsChanged))
                {
                    fired = true;
                }
            };

            wrapper.Address.City = "Salt Lake City";
            Assert.IsTrue(fired);
        }
コード例 #6
0
        public void ShouldRejectChanges()
        {
            var wrapper = new FriendWrapper(_friend);

            wrapper.Address.City = "Vanadzor";
            Assert.AreEqual("Yerevan", wrapper.Address.CityOriginalValue);
            //Assert.IsTrue(wrapper.Address.CityIsChanged);
            //Assert.IsTrue(wrapper.Address.IsChanged);

            wrapper.RejectChanges();

            Assert.AreEqual("Yerevan", wrapper.Address.City);
            Assert.AreEqual("Yerevan", wrapper.Address.CityOriginalValue); //After AcceptChanges() all save
            //Assert.IsFalse(wrapper.Address.CityIsChanged);
            //Assert.IsFalse(wrapper.Address.IsChanged);
        }
        public void ShouldAcceptChanges()
        {
            var wrapper = new FriendWrapper(_friend);

            var emailToModify = wrapper.Emails.First();

            emailToModify.Email = "*****@*****.**";

            Assert.True(wrapper.IsChanged);

            wrapper.AcceptChanges();

            Assert.False(wrapper.IsChanged);
            Assert.Equal("*****@*****.**", emailToModify.Email);
            Assert.Equal("*****@*****.**", emailToModify.EmailOriginalValue);
        }
コード例 #8
0
        public async Task LoadAsync(int id)
        {
            var friend = await _friendDataService.GetByIdAsync(id);

            Friend = new FriendWrapper(friend);
            Friend.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(Friend.HasErrors))
                {
                    ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
                }
            };


            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
        }
コード例 #9
0
        public void ShouldRaisePropertyChangedEventForIsChangedPropertyOfFriendWrapper()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(wrapper.IsChanged))
                {
                    fired = true;
                }
            };

            wrapper.Emails.First().Email = "*****@*****.**";
            Assert.IsTrue(fired);
        }
コード例 #10
0
        public void ShouldAcceptChanges()
        {
            var wrapper = new FriendWrapper(_friend);

            wrapper.FirstName = "Yana";
            Assert.AreEqual("Yana", wrapper.FirstName);
            Assert.AreEqual("Levon", wrapper.FirstNameOriginalValue); // same in initialize()
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.AcceptChanges();

            Assert.AreEqual("Yana", wrapper.FirstName);
            Assert.AreEqual("Yana", wrapper.FirstNameOriginalValue); //After AcceptChanges() all save
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
コード例 #11
0
        public void ShouldAcceptChanges()
        {
            FriendWrapper wrapper = new FriendWrapper(_friend);

            wrapper.FirstName = "Julia";
            Assert.AreEqual("Julia", wrapper.FirstName);
            Assert.AreEqual("Thomas", wrapper.FirstNameOriginalValue);
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.AcceptChanges();

            Assert.AreEqual("Julia", wrapper.FirstName);
            Assert.AreEqual("Julia", wrapper.FirstNameOriginalValue);
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
コード例 #12
0
        public void ShouldReturnValidationErrorIfFirstNameIsEmpty()
        {
            var wrapper = new FriendWrapper(_friend);

            Assert.False(wrapper.HasErrors);

            wrapper.FirstName = "";
            Assert.True(wrapper.HasErrors);

            var errors = wrapper.GetErrors(nameof(wrapper.FirstName)).Cast <string>().ToList();

            Assert.Equal(1, errors.Count);
            Assert.Equal("Firstname is required", errors.First());

            wrapper.FirstName = "Julia";
            Assert.False(wrapper.HasErrors);
        }
        public void ShouldRaisePropertyChangedEventForIsValidOfRootWhenAddingInvalidItem()
        {
            var fired = false;
            var wrapper = new FriendWrapper(_friend);
            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "IsValid") fired = true;
            };

            var emailToAdd = new FriendEmailWrapper(new FriendEmail());
            wrapper.Emails.Add(emailToAdd);
            Assert.True(fired);

            fired = false;
            emailToAdd.Email = "*****@*****.**";
            Assert.True(fired);
        }
コード例 #14
0
        public void ShouldRaisePropertyChangedEventForIsChanged()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(wrapper.IsChanged))
                {
                    fired = true;
                }
            };

            wrapper.FirstName = "Julia";

            Assert.True(fired);
        }
コード例 #15
0
        public void ShouldRefreshErrorsAndIsValidWhenRejectingChanges()
        {
            var wrapper = new FriendWrapper(_friend);

            Assert.True(wrapper.IsValid);
            Assert.False(wrapper.HasErrors);

            wrapper.FirstName = "";

            Assert.False(wrapper.IsValid);
            Assert.True(wrapper.HasErrors);

            wrapper.RejectChanges();

            Assert.True(wrapper.IsValid);
            Assert.False(wrapper.HasErrors);
        }
コード例 #16
0
        private void InitFriend(Friend model)
        {
            Friend = new FriendWrapper(model);
            Friend.PropertyChanged += (s, e) =>
            {
                if (!HasChanges)
                {
                    HasChanges = _friendRepository.HasChanges();
                }

                if (e.PropertyName == nameof(Friend.HasErrors))
                {
                    (SaveCommand as DelegateCommand).RaiseCanExecuteChanged();
                }
            };

            (SaveCommand as DelegateCommand).RaiseCanExecuteChanged();
        }
コード例 #17
0
        public async Task LoadAsync(int friendId)
        {
            var friend = await _repository.GetByIdAsync(friendId);

            Friend = new FriendWrapper(friend);
            Friend.PropertyChanged += (s, e) =>
            {
                if (!HasChanges)
                {
                    HasChanges = _repository.HasChanges();
                }
                if (e.PropertyName == nameof(Friend.HasErrors))
                {
                    ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
                }
            };
            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
        }
        public void ShouldRaisePropertyChangedEventForIsValidOfRootWhenRemovingInvalidItem()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "IsValid")
                {
                    fired = true;
                }
            };
            wrapper.Emails.First().Email = "";
            Assert.IsTrue(fired);

            fired = false;
            wrapper.Emails.Remove(wrapper.Emails.First());
            Assert.IsTrue(fired);
        }
        public void ShouldRaisePropertyChangedEventForIsValidOfRoot()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "IsValid")
                {
                    fired = true;
                }
            };
            wrapper.Emails.First().Email = "";
            Assert.IsTrue(fired);

            fired = false;
            wrapper.Emails.First().Email = "*****@*****.**";
            Assert.IsTrue(fired);
        }
コード例 #20
0
        public void ShouldRaisePropertyChangedEventForIsValidOfRoot()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(wrapper.IsValid))
                {
                    fired = true;
                }
            };
            wrapper.Address.City = "";
            Assert.IsTrue(fired);

            fired = false;
            wrapper.Address.City = "Salt Lake City";
            Assert.IsTrue(fired);
        }
コード例 #21
0
        public void ShouldRejectChanges()
        {
            var wrapper = new FriendWrapper(_friend)
            {
                FirstName = "Julia"
            };

            Assert.Equal("Julia", wrapper.FirstName);
            Assert.Equal("Thomas", wrapper.FirstNameOriginalValue);
            Assert.True(wrapper.FirstNameIsChanged);
            Assert.True(wrapper.IsChanged);

            wrapper.RejectChanges();

            Assert.Equal("Thomas", wrapper.FirstName);
            Assert.Equal("Thomas", wrapper.FirstNameOriginalValue);
            Assert.False(wrapper.FirstNameIsChanged);
            Assert.False(wrapper.IsChanged);
        }
コード例 #22
0
        public void ShouldRaiseErrorsChangedEventWhenFirstNameIsSetToEmptyAndBack()
        {
            var fired   = false;
            var wrapper = new FriendWrapper(_friend);

            wrapper.ErrorsChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(wrapper.FirstName))
                {
                    fired = true;
                }
            };

            wrapper.FirstName = "";
            Assert.True(fired);

            fired             = false;
            wrapper.FirstName = "Julia";
            Assert.True(fired);
        }
コード例 #23
0
 private void InitializeFriend(Friend friend)
 {
     Friend = new FriendWrapper(friend);
     Friend.PropertyChanged += (s, e) =>
     {
         if (!HasChanges)
         {
             HasChanges = _friendRepository.HasChanges();
         }
         if (e.PropertyName == nameof(Friend.HasErrors))
         {
             ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
         }
     };
     ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
     if (Friend.Id == 0)
     {
         // Little trick to trigger the validation
         Friend.FirstName = "";
     }
 }
コード例 #24
0
        private void InitializeFriend(Friend friend)
        {
            Friend = new FriendWrapper(friend);
            Friend.PropertyChanged += (sender, args) =>
            {
                if (!HasChanges)
                {
                    HasChanges = _repository.HasChanges();
                }
                if (args.PropertyName == nameof(Friend.HasErrors))
                {
                    SaveCommand.RaiseCanExecuteChanged();
                }
            };
            SaveCommand.RaiseCanExecuteChanged();

            if (Friend.Id == 0)
            {
                Friend.FirstName = "";
            }
        }
コード例 #25
0
        public void Load(int?friendId = null)
        {
            FriendGroupLookup = _friendGroupLookupProvider.GetLookup();

            Friend friend = friendId.HasValue
                ? _friendDataProvider.GetFriendById(friendId.Value)
                : new Friend {
                Address = new Address(), Emails = new List <FriendEmail>()
            };

            Friend = new FriendWrapper(friend);
            Friend.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(Friend.IsChanged) || e.PropertyName == nameof(Friend.IsValid))
                {
                    InvalidateCommands();
                }
            };

            InvalidateCommands();
        }
コード例 #26
0
        public async Task LoadAsync(int friendId)
        {
            var friend = await _friendRepository.GetByIdAsync(friendId);

            Friend = new FriendWrapper(friend);

            // Raising the event to ensure that it's validated.
            Friend.PropertyChanged += (s, e) =>
            {
                if (!HasChanges)
                {
                    HasChanges = _friendRepository.HasChanges();
                }

                if (e.PropertyName == nameof(Friend.HasErrors))
                {
                    ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
                }
            };

            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
        }
コード例 #27
0
        public void ShouldBeValidAgainWhenIsDeveloperIsSetBackToFalse()
        {
            var wrapper = new FriendWrapper(_friend);

            wrapper.Emails.Clear();
            Assert.IsFalse(wrapper.IsDeveloper);
            Assert.IsTrue(wrapper.IsValid);

            wrapper.IsDeveloper = true;
            Assert.IsFalse(wrapper.IsValid);


            wrapper.IsDeveloper = false;
            Assert.IsTrue(wrapper.IsValid);

            var emailsErrors = wrapper.GetErrors(nameof(wrapper.Emails)).Cast <string>().ToList();

            Assert.AreEqual(0, emailsErrors.Count);

            var isDeveloperErrors = wrapper.GetErrors(nameof(wrapper.IsDeveloper)).Cast <string>().ToList();

            Assert.AreEqual(0, isDeveloperErrors.Count);
        }
コード例 #28
0
        public void ShouldHaveErrorsAndNotBeValidWhenIsDeveloperIsTrueAndNoEmailExists()
        {
            var expectedError = "A developer must have an email-address";

            var wrapper = new FriendWrapper(_friend);

            wrapper.Emails.Clear();
            Assert.IsFalse(wrapper.IsDeveloper);
            Assert.IsTrue(wrapper.IsValid);

            wrapper.IsDeveloper = true;
            Assert.IsFalse(wrapper.IsValid);

            var emailsErrors = wrapper.GetErrors(nameof(wrapper.Emails)).Cast <string>().ToList();

            Assert.AreEqual(1, emailsErrors.Count);
            Assert.AreEqual(expectedError, emailsErrors.Single());

            var isDeveloperErrors = wrapper.GetErrors(nameof(wrapper.IsDeveloper)).Cast <string>().ToList();

            Assert.AreEqual(1, isDeveloperErrors.Count);
            Assert.AreEqual(expectedError, isDeveloperErrors.Single());
        }
コード例 #29
0
        private void InitializeSelectedFriend(Friend friend)
        {
            SelectedFriend = new FriendWrapper(friend);
            // Deze functie wordt ook uitgevoerd als er properties changen
            SelectedFriend.PropertyChanged += (s, e) =>
            {
                if (!HasChanges)
                {
                    HasChanges = _friendRepository.HasChanges();
                }
                //Als er errors zijn
                if (e.PropertyName == nameof(SelectedFriend.HasErrors))
                {
                    ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged(); // wordt hier voor 1x op true gezet
                }
            };
            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged(); // Als er errors zijn wordt true => false; Als er geen errors zijn wordt dit true

            if (SelectedFriend.Id == 0)
            {
                //Trick to trigger validation, mag niet null zijn
                SelectedFriend.FirstName = "";
            }
        }
コード例 #30
0
        public void ShouldBeValidAgainWhenEmailIsAdded()
        {
            var wrapper = new FriendWrapper(_friend);

            wrapper.Emails.Clear();
            Assert.IsFalse(wrapper.IsDeveloper);
            Assert.IsTrue(wrapper.IsValid);

            wrapper.IsDeveloper = true;
            Assert.IsFalse(wrapper.IsValid);

            wrapper.Emails.Add(new FriendEmailWrapper(new FriendEmail {
                Email = "*****@*****.**"
            }));
            Assert.IsTrue(wrapper.IsValid);

            var emailsErrors = wrapper.GetErrors(nameof(wrapper.Emails)).Cast <string>().ToList();

            Assert.AreEqual(0, emailsErrors.Count);

            var isDeveloperErrors = wrapper.GetErrors(nameof(wrapper.IsDeveloper)).Cast <string>().ToList();

            Assert.AreEqual(0, isDeveloperErrors.Count);
        }