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); }
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); }
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; }