Example #1
0
    public void LendToViewModelLendToTest()
    {
        var book = new Book()
        {
            Title = "The Fellowship of the Ring"
        };
        var persons = new List <Person>()
        {
            new() { Firstname = "Harry" },
            new() { Firstname = "Ron" }
        };
        var lendToView      = new MockLendToView();
        var lendToViewModel = new LendToViewModel(lendToView)
        {
            Book = book, Persons = persons, SelectedPerson = persons[0]
        };

        Assert.AreEqual(book, lendToViewModel.Book);
        Assert.AreEqual(persons, lendToViewModel.Persons);

        // Show the dialog
        var owner = new object();
        Action <MockLendToView> showDialogAction = _ =>
        {
            Assert.IsTrue(lendToView.IsVisible);
            Assert.AreEqual(owner, lendToView.Owner);

            // Check the default values
            Assert.IsTrue(lendToViewModel.IsLendTo);
            Assert.IsFalse(lendToViewModel.IsWasReturned);
            Assert.AreEqual(persons[0], lendToViewModel.SelectedPerson);

            // Select the last person: Lend to Ron
            AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.SelectedPerson, () => lendToViewModel.SelectedPerson = persons[^ 1]);
        public void LendToViewModelLendToTest()
        {
            Book book = new Book()
            {
                Title = "The Fellowship of the Ring"
            };

            List <Person> persons = new List <Person>()
            {
                new Person()
                {
                    Firstname = "Harry"
                },
                new Person()
                {
                    Firstname = "Ron"
                }
            };

            MockLendToView  lendToView      = new MockLendToView();
            LendToViewModel lendToViewModel = new LendToViewModel(lendToView)
            {
                Book = book, Persons = persons
            };

            Assert.AreEqual(book, lendToViewModel.Book);
            Assert.AreEqual(persons, lendToViewModel.Persons);

            // Show the dialog
            object owner = new object();
            Action <MockLendToView> showDialogAction = (view) =>
            {
                Assert.AreEqual("", LendToViewModel.Title);
                Assert.IsTrue(lendToView.IsVisible);
                Assert.AreEqual(owner, lendToView.Owner);

                // Check the default values
                Assert.IsTrue(lendToViewModel.IsLendTo);
                Assert.IsFalse(lendToViewModel.IsWasReturned);
                Assert.AreEqual(persons.First(), lendToViewModel.SelectedPerson);

                // Select the last person: Lend to Ron
                AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.SelectedPerson, () =>
                                                  lendToViewModel.SelectedPerson = persons.Last());

                // Press Ok button
                lendToViewModel.OkCommand.Execute(null);
            };

            MockLendToView.ShowDialogAction = showDialogAction;
            Assert.IsTrue(lendToViewModel.ShowDialog(owner));
            Assert.IsFalse(lendToView.IsVisible);
            Assert.AreEqual(persons.Last(), lendToViewModel.SelectedPerson);

            MockLendToView.ShowDialogAction = null;
        }
        public void LendToViewModelWasReturnedTest()
        {
            List <Person> persons = new List <Person>()
            {
                new Person()
                {
                    Firstname = "Harry"
                },
                new Person()
                {
                    Firstname = "Ron"
                }
            };

            Book book = new Book()
            {
                Title = "The Fellowship of the Ring", LendTo = persons.First()
            };

            MockLendToView  lendToView      = new MockLendToView();
            LendToViewModel lendToViewModel = new LendToViewModel(lendToView)
            {
                Book = book, Persons = persons
            };

            // Show the dialog
            object owner = new object();
            Action <MockLendToView> showDialogAction = (view) =>
            {
                // Check the default values
                Assert.IsFalse(lendToViewModel.IsLendTo);
                Assert.IsTrue(lendToViewModel.IsWasReturned);

                // Change check boxes
                AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.IsLendTo, () =>
                                                  lendToViewModel.IsLendTo = true);
                Assert.IsTrue(lendToViewModel.IsLendTo);
                Assert.IsFalse(lendToViewModel.IsWasReturned);

                // Restore the original check boxes state
                AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.IsWasReturned, () =>
                                                  lendToViewModel.IsWasReturned = true);
                Assert.IsFalse(lendToViewModel.IsLendTo);
                Assert.IsTrue(lendToViewModel.IsWasReturned);

                lendToViewModel.OkCommand.Execute(null);
            };

            MockLendToView.ShowDialogAction = showDialogAction;
            Assert.IsNotNull(lendToViewModel.SelectedPerson);
            Assert.IsTrue(lendToViewModel.ShowDialog(owner));
            Assert.IsNull(lendToViewModel.SelectedPerson);

            MockLendToView.ShowDialogAction = null;
        }
Example #4
0
        private void LendTo(Book book)
        {
            LendToViewModel lendToViewModel = lendToViewModelFactory.CreateExport().Value;

            lendToViewModel.Book    = book;
            lendToViewModel.Persons = entityService.Persons;
            if (lendToViewModel.ShowDialog(shellService.ShellView))
            {
                book.LendTo = lendToViewModel.SelectedPerson;
            }
        }
        public void LendToViewModelLendToTest()
        {
            Book book = new Book() { Title = "The Fellowship of the Ring" };

            List<Person> persons = new List<Person>()
            {
                new Person() { Firstname = "Harry" },
                new Person() { Firstname = "Ron" }
            };

            MockLendToView lendToView = new MockLendToView();

            AssertHelper.ExpectedException<ArgumentNullException>(() => new LendToViewModel(lendToView, null, null));
            AssertHelper.ExpectedException<ArgumentNullException>(() => new LendToViewModel(lendToView, book, null));
            LendToViewModel lendToViewModel = new LendToViewModel(lendToView, book, persons);

            Assert.AreEqual(book, lendToViewModel.Book);
            Assert.AreEqual(persons, lendToViewModel.Persons);

            // Show the dialog
            object owner = new object();
            Action<MockLendToView> showDialogAction = (view) =>
            {
                Assert.AreEqual("", LendToViewModel.Title);
                Assert.IsTrue(lendToView.IsVisible);
                Assert.AreEqual(owner, lendToView.Owner);

                // Check the default values
                Assert.IsTrue(lendToViewModel.IsLendTo);
                Assert.IsFalse(lendToViewModel.IsWasReturned);
                Assert.AreEqual(persons.First(), lendToViewModel.SelectedPerson);

                // Select the last person: Lend to Ron
                AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.SelectedPerson, () =>
                    lendToViewModel.SelectedPerson = persons.Last());

                // Press Ok button
                lendToViewModel.OkCommand.Execute(null);
            };

            lendToView.ShowDialogAction = showDialogAction;
            Assert.IsTrue(lendToViewModel.ShowDialog(owner));
            Assert.IsFalse(lendToView.IsVisible);
            Assert.AreEqual(persons.Last(), lendToViewModel.SelectedPerson);
        }
Example #6
0
        public void LendToViewModelWasReturnedTest()
        {
            List<Person> persons = new List<Person>()
            {
                new Person() { Firstname = "Harry" },
                new Person() { Firstname = "Ron" }
            };

            Book book = new Book() { Title = "The Fellowship of the Ring", LendTo = persons.First() };

            MockLendToView lendToView = new MockLendToView();
            LendToViewModel lendToViewModel = new LendToViewModel(lendToView) { Book = book, Persons = persons };

            // Show the dialog
            object owner = new object();
            Action<MockLendToView> showDialogAction = (view) =>
            {
                // Check the default values
                Assert.IsFalse(lendToViewModel.IsLendTo);
                Assert.IsTrue(lendToViewModel.IsWasReturned);

                // Change check boxes
                AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.IsLendTo, () =>
                    lendToViewModel.IsLendTo = true);
                Assert.IsTrue(lendToViewModel.IsLendTo);
                Assert.IsFalse(lendToViewModel.IsWasReturned);

                // Restore the original check boxes state
                AssertHelper.PropertyChangedEvent(lendToViewModel, x => x.IsWasReturned, () =>
                    lendToViewModel.IsWasReturned = true);
                Assert.IsFalse(lendToViewModel.IsLendTo);
                Assert.IsTrue(lendToViewModel.IsWasReturned);

                lendToViewModel.OkCommand.Execute(null);
            };

            MockLendToView.ShowDialogAction = showDialogAction;
            Assert.IsNotNull(lendToViewModel.SelectedPerson);
            Assert.IsTrue(lendToViewModel.ShowDialog(owner));
            Assert.IsNull(lendToViewModel.SelectedPerson);

            MockLendToView.ShowDialogAction = null;
        }
        public void LendToTest()
        {
            var fellowship = new Book()
            {
                Title = "The Fellowship of the Ring"
            };
            var twoTowers = new Book()
            {
                Title = "The Two Towers"
            };
            var harry = new Person()
            {
                Firstname = "Harry"
            };
            var ron = new Person()
            {
                Firstname = "Ron"
            };
            var entityService = Get <IEntityService>();

            entityService.Books.Add(fellowship);
            entityService.Books.Add(twoTowers);
            entityService.Persons.Add(harry);
            entityService.Persons.Add(ron);
            var shellService = Get <ShellService>();

            shellService.ShellView = Get <IShellView>();
            var bookController = Get <BookController>();

            bookController.Initialize();
            var bookListView      = Get <MockBookListView>();
            var bookListViewModel = ViewHelper.GetViewModel <BookListViewModel>(bookListView);
            var bookView          = Get <MockBookView>();
            var bookViewModel     = ViewHelper.GetViewModel <BookViewModel>(bookView);

            // Check that the LendTo Button is enabled
            Assert.IsNull(fellowship.LendTo);
            Assert.AreEqual(fellowship, bookViewModel.Book);
            Assert.IsTrue(bookViewModel.IsEnabled);

            // Open the LendTo dialog
            MockLendToView.ShowDialogAction = view =>
            {
                Assert.AreEqual(Get <IShellView>(), view.Owner);
                Assert.IsTrue(view.IsVisible);
                LendToViewModel viewModel = (LendToViewModel)view.DataContext;
                Assert.AreEqual(fellowship, viewModel.Book);
                Assert.AreEqual(entityService.Persons, viewModel.Persons);

                // Lend the book to Ron
                viewModel.SelectedPerson = ron;
                viewModel.OkCommand.Execute(null);
            };
            bookViewModel.LendToCommand.Execute(fellowship);
            Assert.AreEqual(ron, fellowship.LendTo);

            // Check that the LendTo Button is disabled when no book is selected anymore.
            AssertHelper.CanExecuteChangedEvent(bookViewModel.LendToCommand, () =>
                                                bookListViewModel.SelectedBook = null);
            Assert.IsNull(bookViewModel.Book);
            Assert.IsFalse(bookViewModel.IsEnabled);

            MockLendToView.ShowDialogAction = null;
        }
Example #8
0
 private void LendTo(Book book)
 {
     LendToViewModel lendToViewModel = new LendToViewModel(container.GetExportedValue<ILendToView>(), book, entityService.Persons);
     if (lendToViewModel.ShowDialog(shellService.ShellView))
     {
         book.LendTo = lendToViewModel.SelectedPerson;
     }
 }