コード例 #1
0
        public void PersonListViewModelPersonsTest()
        {
            var persons = new List <Person>()
            {
                new Person()
                {
                    Firstname = "Harry"
                },
                new Person()
                {
                    Firstname = "Ron"
                }
            };
            var personListView      = new MockPersonListView();
            var personListViewModel = new PersonListViewModel(personListView)
            {
                Persons = persons
            };

            Assert.AreEqual(persons, personListViewModel.Persons);
            Assert.IsNull(personListViewModel.SelectedPerson);
            Assert.IsFalse(personListViewModel.SelectedPersons.Any());

            // Select the first person
            AssertHelper.PropertyChangedEvent(personListViewModel, x => x.SelectedPerson,
                                              () => personListViewModel.SelectedPerson = persons.First());
            Assert.AreEqual(persons.First(), personListViewModel.SelectedPerson);

            personListViewModel.AddSelectedPerson(persons.First());
            AssertHelper.SequenceEqual(new Person[] { persons.First() }, personListViewModel.SelectedPersons);

            // Select both persons
            personListViewModel.AddSelectedPerson(persons.Last());
            AssertHelper.SequenceEqual(persons, personListViewModel.SelectedPersons);
        }
コード例 #2
0
        public void CreateNewEmailTest()
        {
            Person harry = new Person()
            {
                Firstname = "Harry", Email = "*****@*****.**"
            };
            Person ron = new Person()
            {
                Firstname = "Ron", Email = "Wrong Address"
            };

            IEntityService entityService = Container.GetExportedValue <IEntityService>();

            entityService.Persons.Add(harry);
            entityService.Persons.Add(ron);

            PersonController personController = Container.GetExportedValue <PersonController>();

            personController.Initialize();

            MockPersonListView  personListView      = Container.GetExportedValue <MockPersonListView>();
            PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView);
            MockPersonView      personView          = Container.GetExportedValue <MockPersonView>();
            PersonViewModel     personViewModel     = ViewHelper.GetViewModel <PersonViewModel>(personView);

            ICommand command = personListViewModel.CreateNewEmailCommand;

            Assert.AreEqual(command, personViewModel.CreateNewEmailCommand);

            MockEmailService emailService = Container.GetExportedValue <MockEmailService>();

            command.Execute(harry);
            Assert.AreEqual(harry.Email, emailService.ToEmailAddress);

            // An error message should occur when the email address is invalid.

            MockMessageService messageService = Container.GetExportedValue <MockMessageService>();

            messageService.Clear();
            emailService.ToEmailAddress = null;
            command.Execute(ron);
            Assert.AreEqual(MessageType.Error, messageService.MessageType);
            Assert.AreEqual(Resources.CorrectEmailAddress, messageService.Message);
            Assert.IsNull(emailService.ToEmailAddress);

            // An error message should occur when no email address was entered.

            messageService.Clear();
            emailService.ToEmailAddress = null;
            ron.Email = null;
            command.Execute(ron);
            Assert.AreEqual(MessageType.Error, messageService.MessageType);
            Assert.AreEqual(Resources.CorrectEmailAddress, messageService.Message);
            Assert.IsNull(emailService.ToEmailAddress);
        }
コード例 #3
0
        public void PersonListViewModelFilterTest()
        {
            var persons = new List <Person>()
            {
                new Person()
                {
                    Firstname = "Harry", Lastname = "Potter"
                },
                new Person()
                {
                    Firstname = "Ron", Lastname = "Weasley"
                }
            };
            var personListView      = new MockPersonListView();
            var personListViewModel = new PersonListViewModel(personListView)
            {
                Persons = persons
            };

            Assert.IsTrue(personListViewModel.Filter(persons[0]));
            Assert.IsTrue(personListViewModel.Filter(persons[1]));

            AssertHelper.PropertyChangedEvent(personListViewModel, x => x.FilterText, () => personListViewModel.FilterText = "r");
            Assert.AreEqual("r", personListViewModel.FilterText);
            Assert.IsTrue(personListViewModel.Filter(persons[0]));
            Assert.IsTrue(personListViewModel.Filter(persons[1]));

            personListViewModel.FilterText = "arr";
            Assert.IsTrue(personListViewModel.Filter(persons[0]));
            Assert.IsFalse(personListViewModel.Filter(persons[1]));

            personListViewModel.FilterText = "eas";
            Assert.IsFalse(personListViewModel.Filter(persons[0]));
            Assert.IsTrue(personListViewModel.Filter(persons[1]));

            personListViewModel.FilterText = "xyz";
            Assert.IsFalse(personListViewModel.Filter(persons[0]));
            Assert.IsFalse(personListViewModel.Filter(persons[1]));

            personListViewModel.FilterText = "R";
            persons.Add(new Person());
            Assert.IsFalse(personListViewModel.Filter(persons[2]));
            persons[2].Firstname = "Hermione";
            Assert.IsTrue(personListViewModel.Filter(persons[2]));
        }
コード例 #4
0
        public void RemoveAndSelection3Test()
        {
            Person harry = new Person()
            {
                Firstname = "Harry"
            };
            Person ron = new Person()
            {
                Firstname = "Ron"
            };
            Person ginny = new Person()
            {
                Firstname = "Ginny"
            };

            IEntityService entityService = Container.GetExportedValue <IEntityService>();

            entityService.Persons.Add(harry);
            entityService.Persons.Add(ron);
            entityService.Persons.Add(ginny);

            PersonController personController = Container.GetExportedValue <PersonController>();

            personController.Initialize();

            MockPersonListView  personListView      = Container.GetExportedValue <MockPersonListView>();
            PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView);

            personListViewModel.PersonCollectionView = personListViewModel.Persons;

            // Remove all persons and check that nothing is selected anymore
            personListViewModel.SelectedPerson = harry;
            personListViewModel.AddSelectedPerson(harry);
            personListViewModel.AddSelectedPerson(ron);
            personListViewModel.AddSelectedPerson(ginny);
            personListViewModel.RemoveCommand.Execute(null);
            Assert.IsFalse(entityService.Persons.Any());
            Assert.IsNull(personListViewModel.SelectedPerson);
        }
コード例 #5
0
        public void RemoveAndSelection2Test()
        {
            Person harry = new Person()
            {
                Firstname = "Harry"
            };
            Person ron = new Person()
            {
                Firstname = "Ron"
            };
            Person ginny = new Person()
            {
                Firstname = "Ginny"
            };

            IEntityService entityService = Container.GetExportedValue <IEntityService>();

            entityService.Persons.Add(harry);
            entityService.Persons.Add(ron);
            entityService.Persons.Add(ginny);

            PersonController personController = Container.GetExportedValue <PersonController>();

            personController.Initialize();

            MockPersonListView  personListView      = Container.GetExportedValue <MockPersonListView>();
            PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView);

            // Set the sorting to: "Ginny", "Harry", "Ron"
            personListViewModel.PersonCollectionView = personListViewModel.Persons.OrderBy(p => p.Firstname);

            // Remove the last person and check that the last one is selected again.
            personListViewModel.SelectedPerson = ron;
            personListViewModel.AddSelectedPerson(personListViewModel.SelectedPerson);
            personListViewModel.RemoveCommand.Execute(null);
            Assert.IsTrue(entityService.Persons.SequenceEqual(new[] { harry, ginny }));
            Assert.AreEqual(harry, personListViewModel.SelectedPerson);
        }
コード例 #6
0
        public void PersonListViewModelCommandsTest()
        {
            MockPersonListView  personListView      = new MockPersonListView();
            PersonListViewModel personListViewModel = new PersonListViewModel(personListView)
            {
                Persons = new List <Person>()
            };

            DelegateCommand mockCommand = new DelegateCommand(() => {});

            AssertHelper.PropertyChangedEvent(personListViewModel, x => x.AddNewCommand, () =>
                                              personListViewModel.AddNewCommand = mockCommand);
            Assert.AreEqual(mockCommand, personListViewModel.AddNewCommand);

            mockCommand = new DelegateCommand(() => { });
            AssertHelper.PropertyChangedEvent(personListViewModel, x => x.RemoveCommand, () =>
                                              personListViewModel.RemoveCommand = mockCommand);
            Assert.AreEqual(mockCommand, personListViewModel.RemoveCommand);

            mockCommand = new DelegateCommand(() => { });
            AssertHelper.PropertyChangedEvent(personListViewModel, x => x.CreateNewEmailCommand, () =>
                                              personListViewModel.CreateNewEmailCommand = mockCommand);
            Assert.AreEqual(mockCommand, personListViewModel.CreateNewEmailCommand);
        }
コード例 #7
0
        public void AddAndRemoveTest()
        {
            Person harry = new Person()
            {
                Firstname = "Harry"
            };
            Person ron = new Person()
            {
                Firstname = "Ron"
            };

            IEntityService entityService = Container.GetExportedValue <IEntityService>();

            entityService.Persons.Add(harry);
            entityService.Persons.Add(ron);

            PersonController personController = Container.GetExportedValue <PersonController>();

            personController.Initialize();

            MockPersonListView  personListView      = Container.GetExportedValue <MockPersonListView>();
            PersonListViewModel personListViewModel = ViewHelper.GetViewModel <PersonListViewModel>(personListView);

            personListViewModel.PersonCollectionView = personListViewModel.Persons;
            MockPersonView  personView      = Container.GetExportedValue <MockPersonView>();
            PersonViewModel personViewModel = ViewHelper.GetViewModel <PersonViewModel>(personView);

            // Add a new Person
            Assert.AreEqual(2, entityService.Persons.Count);
            Assert.IsTrue(personListViewModel.AddNewCommand.CanExecute(null));
            personListViewModel.AddNewCommand.Execute(null);
            Assert.AreEqual(3, entityService.Persons.Count);

            // Check that the new Person is selected and the first control gets the focus
            Assert.AreEqual(entityService.Persons.Last(), personViewModel.Person);
            Assert.IsTrue(personListView.FirstCellHasFocus);

            // Simulate an invalid UI input state => the user can't add more persons
            AssertHelper.CanExecuteChangedEvent(personListViewModel.AddNewCommand, () =>
                                                personViewModel.IsValid = false);
            Assert.IsFalse(personListViewModel.AddNewCommand.CanExecute(null));
            Assert.IsFalse(personListViewModel.RemoveCommand.CanExecute(null));

            // Remove the last two Persons at once
            personViewModel.IsValid          = true;
            personListView.FirstCellHasFocus = false;
            personListViewModel.AddSelectedPerson(ron);
            personListViewModel.AddSelectedPerson(entityService.Persons.Last());
            Assert.IsTrue(personListViewModel.RemoveCommand.CanExecute(null));
            personListViewModel.RemoveCommand.Execute(null);
            Assert.IsTrue(entityService.Persons.SequenceEqual(new Person[] { harry }));
            Assert.AreEqual(harry, personViewModel.Person);
            Assert.IsTrue(personListView.FirstCellHasFocus);

            // Deselect all Persons => the Remove command must be deactivated
            AssertHelper.CanExecuteChangedEvent(personListViewModel.RemoveCommand, () =>
            {
                personListViewModel.SelectedPersons.ToList().ForEach(x => personListViewModel.RemoveSelectedPerson(x));
                personListViewModel.SelectedPerson = null;
            });
            Assert.IsFalse(personListViewModel.RemoveCommand.CanExecute(null));
        }