Esempio n. 1
0
        public void BookViewModelIsValidTest()
        {
            MockBookView bookView = new MockBookView();
            BookViewModel bookViewModel = new BookViewModel(bookView);

            Assert.IsTrue(bookViewModel.IsValid);

            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.IsValid, () => bookViewModel.IsValid = false);
            Assert.IsFalse(bookViewModel.IsValid);
        }
Esempio n. 2
0
        public void BookViewModelCommandsTest()
        {
            MockBookView bookView = new MockBookView();
            BookViewModel bookViewModel = new BookViewModel(bookView);

            DelegateCommand mockCommand = new DelegateCommand(() => { });
            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.LendToCommand, () =>
                bookViewModel.LendToCommand = mockCommand);
            Assert.AreEqual(mockCommand, bookViewModel.LendToCommand);
        }
Esempio n. 3
0
        public void BookViewModelIsValidTest()
        {
            MockBookView  bookView      = new MockBookView();
            BookViewModel bookViewModel = new BookViewModel(bookView);

            Assert.IsTrue(bookViewModel.IsValid);

            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.IsValid, () => bookViewModel.IsValid = false);
            Assert.IsFalse(bookViewModel.IsValid);
        }
Esempio n. 4
0
        public void BookViewModelCommandsTest()
        {
            MockBookView  bookView      = new MockBookView();
            BookViewModel bookViewModel = new BookViewModel(bookView);

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

            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.LendToCommand, () =>
                                              bookViewModel.LendToCommand = mockCommand);
            Assert.AreEqual(mockCommand, bookViewModel.LendToCommand);
        }
Esempio n. 5
0
        public void BookViewModelBookTest()
        {
            MockBookView bookView = new MockBookView();
            BookViewModel bookViewModel = new BookViewModel(bookView);

            Assert.IsFalse(bookViewModel.IsEnabled);

            Book book = new Book();
            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.Book, () => bookViewModel.Book = book);
            Assert.AreEqual(book, bookViewModel.Book);
            Assert.IsTrue(bookViewModel.IsEnabled);

            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.IsEnabled, () => bookViewModel.Book = null);
            Assert.IsNull(bookViewModel.Book);
            Assert.IsFalse(bookViewModel.IsEnabled);
        }
Esempio n. 6
0
        public void BookViewModelBookTest()
        {
            MockBookView  bookView      = new MockBookView();
            BookViewModel bookViewModel = new BookViewModel(bookView);

            Assert.IsFalse(bookViewModel.IsEnabled);

            Book book = new Book();

            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.Book, () => bookViewModel.Book = book);
            Assert.AreEqual(book, bookViewModel.Book);
            Assert.IsTrue(bookViewModel.IsEnabled);

            AssertHelper.PropertyChangedEvent(bookViewModel, x => x.IsEnabled, () => bookViewModel.Book = null);
            Assert.IsNull(bookViewModel.Book);
            Assert.IsFalse(bookViewModel.IsEnabled);
        }
        public void AddAndRemoveTest()
        {
            Book fellowship = new Book()
            {
                Title = "The Fellowship of the Ring"
            };
            Book twoTowers = new Book()
            {
                Title = "The Two Towers"
            };

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

            entityService.Books.Add(fellowship);
            entityService.Books.Add(twoTowers);

            BookController bookController = Container.GetExportedValue <BookController>();

            bookController.Initialize();

            MockBookListView  bookListView      = Container.GetExportedValue <MockBookListView>();
            BookListViewModel bookListViewModel = ViewHelper.GetViewModel <BookListViewModel>(bookListView);

            bookListViewModel.BookCollectionView = bookListViewModel.Books;
            MockBookView  bookView      = Container.GetExportedValue <MockBookView>();
            BookViewModel bookViewModel = ViewHelper.GetViewModel <BookViewModel>(bookView);

            // Add a new Book
            Assert.AreEqual(2, entityService.Books.Count);
            Assert.IsTrue(bookListViewModel.AddNewCommand.CanExecute(null));
            bookListViewModel.AddNewCommand.Execute(null);
            Assert.AreEqual(3, entityService.Books.Count);

            // Check that the new Book is selected and the first control gets the focus
            Assert.AreEqual(entityService.Books.Last(), bookViewModel.Book);
            Assert.IsTrue(bookListView.FirstCellHasFocus);

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

            // Remove the last two Books at once and check that the last remaining book is selected.
            bookViewModel.IsValid          = true;
            bookListView.FirstCellHasFocus = false;
            bookListViewModel.AddSelectedBook(bookListViewModel.Books.Single(b => b.Book == twoTowers));
            bookListViewModel.AddSelectedBook(bookListViewModel.Books.Last());
            Assert.IsTrue(bookListViewModel.RemoveCommand.CanExecute(null));
            bookListViewModel.RemoveCommand.Execute(null);
            Assert.IsTrue(entityService.Books.SequenceEqual(new Book[] { fellowship }));
            Assert.AreEqual(fellowship, bookViewModel.Book);
            Assert.IsTrue(bookListView.FirstCellHasFocus);

            // Deselect all Books => the Remove command must be deactivated
            AssertHelper.CanExecuteChangedEvent(bookListViewModel.RemoveCommand, () =>
            {
                bookListViewModel.SelectedBooks.ToList().ForEach(x => bookListViewModel.RemoveSelectedBook(x));
                bookListViewModel.SelectedBook = null;
            });
            Assert.IsFalse(bookListViewModel.RemoveCommand.CanExecute(null));
        }
        public void LendToTest()
        {
            Book fellowship = new Book()
            {
                Title = "The Fellowship of the Ring"
            };
            Book twoTowers = new Book()
            {
                Title = "The Two Towers"
            };
            Person harry = new Person()
            {
                Firstname = "Harry"
            };
            Person ron = new Person()
            {
                Firstname = "Ron"
            };

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

            entityService.Books.Add(fellowship);
            entityService.Books.Add(twoTowers);
            entityService.Persons.Add(harry);
            entityService.Persons.Add(ron);

            ShellService shellService = Container.GetExportedValue <ShellService>();

            shellService.ShellView = Container.GetExportedValue <IShellView>();

            BookController bookController = Container.GetExportedValue <BookController>();

            bookController.Initialize();

            MockBookListView  bookListView      = Container.GetExportedValue <MockBookListView>();
            BookListViewModel bookListViewModel = ViewHelper.GetViewModel <BookListViewModel>(bookListView);
            MockBookView      bookView          = Container.GetExportedValue <MockBookView>();
            BookViewModel     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(Container.GetExportedValue <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;
        }