public void DeleteCommand_WhenItemDeletedFromTheCollection_CallsRepositoryDelete() { var repository = Substitute.For<INewspaperAdRepository>(); repository.GetAllAdvertisements().Returns(new List<Advertisement>()); bool deleteCalled; Newspaper deletedModel; var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var collectionViewModel = new NewspaperCollectionViewModel(repository); repository.When(x => x.Delete(model1)).Do(x => RepositoryUpdateFields(x, out deleteCalled, out deletedModel)); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); // Act collectionViewModel.Newspapers.Remove(paperItemVm1); paperItemVm1.DbStatus.Should().Be(DbModificationState.Deleted, "State of object should be deleted."); // Assert repository.Received().Save(model1); }
public void AddAdvertisement_WithValidAd_AddsCurrentNewspaperItemToNewspapersCollectionInTheAddedAd() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); var paperModel1 = new Newspaper() {Name = "New paper 1"}; var paperItemViewModel1 = new NewspaperItemViewModel(repository) {Model = paperModel1}; var adModel = new Advertisement() {Name = "Ad 1 Name", Text = "Ad 1 text."}; var adItemViewModel = new AdvertisementItemViewModel(repository) {Model = adModel}; collectionViewModel.Newspapers.Add(paperItemViewModel1); collectionViewModel.CurrentItem.Should().Be(paperItemViewModel1, "The current item is the item that was added."); detailViewModel.ItemViewModel.Should().Be(collectionViewModel.CurrentItem, "The detail view model references the collection's current item."); paperItemViewModel1.Advertisements.Count.Should().Be(0, "No newspapers are referenced in the advertisement."); adItemViewModel.Newspapers.Count.Should().Be(0, "There are no papers in this ad's collection."); // Act paperItemViewModel1.Advertisements.Add(adItemViewModel); // Assert paperItemViewModel1.Advertisements.Count.Should().Be(1, "One item was added"); adItemViewModel.Newspapers.Count.Should().Be(1, "One newspaper reference was added to this advertisement."); adItemViewModel.Newspapers.ToList().First().Should().Be(collectionViewModel.CurrentItem, "The paper added to the advertisment's newspaper collection was the Newspaper collection's CurrentItem"); }
public void AddItemCommand_WhenInvokedAgainstEmptyNewspapersCollection_ReturnsItemViewModelAsCurrentItemInCollection() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); // Act detailViewModel.AddItemCommand.Execute(null); // Assert detailViewModel.ItemViewModel.Should().Be(collectionViewModel.CurrentItem, "The detail view model should be the CurrentItem in the collection."); }
public void AddingItemMessageHandler_WhenInvoked_CallsRepositorySaveWithNewItem() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var message = new AddingNewspaperItemMessage(); var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Count.Should().Be(0, "There are no items in the collection initially."); // Act Messenger.Default.Send(message); // Assert repository.Received().Save(collectionViewModel.Newspapers.First().Model); }
public void AddingItemMessageHandler_WhenInvoked_AddsNewItemToNewspapersCollection() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var message = new AddingNewspaperItemMessage(); var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Count.Should().Be(0, "There are no items in the collection initially."); // Act Messenger.Default.Send(message); // Assert collectionViewModel.Newspapers.Count.Should().Be(1, "A new item should have been added to the collection."); collectionViewModel.Newspapers.First().Name.Should().Be(Newspaper.MSG_NEW_NEWSPAPER_NAME, "The new item should be a new Newspaper."); }
public void AddingItemMessage_WhenReceived_AddsNewNewspaperToCollection() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); var countBeforeAdd = collectionViewModel.Newspapers.Count; countBeforeAdd.Should().Be(0, "The collection should be empty"); // Act detailViewModel.AddItemCommand.Execute(null); var countAfterAdd = collectionViewModel.Newspapers.Count; // Assert countAfterAdd.Should().Be(1, "One item should have been added."); }
public void NewspaperDetailItem_WhenNewspaperCurrentItemChangedMessageReceived_ResetsItemViewModelToValueSentInMessage() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); var paperModel1 = new Newspaper() {Name = "New paper 1"}; var paperModel2 = new Newspaper() {Name = "New paper 2"}; var paperItemViewModel1 = new NewspaperItemViewModel(repository) {Model = paperModel1}; var paperItemViewModel2 = new NewspaperItemViewModel(repository) {Model = paperModel2}; collectionViewModel.Newspapers.Add(paperItemViewModel1); collectionViewModel.Newspapers.Add(paperItemViewModel2); collectionViewModel.CurrentItem.Should().Be(paperItemViewModel2); // Act collectionViewModel.CurrentItem = paperItemViewModel1; // Assert detailViewModel.ItemViewModel.Should().Be(paperItemViewModel1); }
public void CancelCommand_WhenInvoked_ResetsNameToCollectionCurrentValue() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); detailViewModel.AddItemCommand.Execute(null); collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The detail model points to the Collection CurrentItem"); var oldName = collectionViewModel.CurrentItem.Name; var newName = "Changed Newspaper Name"; detailViewModel.Name = newName; collectionViewModel.CurrentItem.Name.Should().Be(oldName, "Name in the collection should not change"); detailViewModel.Name.Should().Be(newName, "Alteration is reflected in the detail view model"); // Act detailViewModel.CancelItemCommand.Execute(null); // Assert detailViewModel.Name.Should().Be(oldName, "The Newspaper name should revert back"); collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The entire instance should have reverted back to the original value"); }
public void AddingItemMessageHandler_WhenInvoked_SendsCurrentItemChangedMessage() { // Arrange var repository = GetNewspaperRepository(); var message = new AddingNewspaperItemMessage(); var collectionViewModel = new NewspaperCollectionViewModel(repository); var changedMessageReceived = false; NewspaperItemViewModel receivedItemViewModel = null; collectionViewModel.Newspapers.Count.Should().Be(0, "There are no items in the collection initially."); Messenger.Default.Register<CurrentNewspaperItemChangedMessage>(this, msg => { changedMessageReceived = true; receivedItemViewModel = msg.ItemViewModel; }); // Act Messenger.Default.Send(message); // Assert changedMessageReceived.Should().Be(true, "The message was sent from the NewspaperCollectionsViewModel."); receivedItemViewModel.Should().Be(collectionViewModel.Newspapers.First(), "The item received in the message matches the CurrentItem in the collection."); }
public void CurrentItem_AfterDeletingLastItemOnNewspapersCollection_SetToLastItemInNewspapersCollection() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); collectionViewModel.CurrentItem.Should().Be(paperItemVm3, "CurrentItem should be the last item added."); // Act collectionViewModel.Newspapers.Remove(paperItemVm3); // Assert collectionViewModel.CurrentItem.Should().Be(paperItemVm2, "Removing the last entry makes the current last entry the CurrentItem"); }
public void SelectedItemChangedHandler_WhenInvoked_SetsCurrentItemToNewSelection() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.CurrentItem.Should().Be(null, "There is no current item in an empty list."); // Act collectionViewModel.Newspapers.Add(paperItemVm1); // Assert collectionViewModel.CurrentItem.Should().Be(paperItemVm1, "The current item is now"); }
public void SelectedItemChangedHandler_WhenCollectionChanged_IsCalled() { // Arrange var repository = GetNewspaperRepository(); var collectionChangedCalled = false; var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.SelectedItemChangedCommand = new RelayCommand<RoutedPropertyChangedEventArgs<object>>((args) => { collectionChangedCalled = true; }); collectionViewModel.Newspapers.Add(paperItemVm1); // Act collectionViewModel.SelectedItemChangedCommand.Execute(null); // Assert collectionChangedCalled.Should().Be(true, "The event was called"); }
public void SaveCommand_WhenPopulatedAndNewItemAdded_IsExecuted() { // Arrange var saveCommandCalled = false; var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.SaveCommand = new RelayCommand(() => { saveCommandCalled = true; }); // Act collectionViewModel.Newspapers.Add(paperItemVm1); // Assert repository.Received().Save(model1); }
public void RemovingItemMessageHandler_WhenInvoked_SendsCurrentItemChangedMessage() { // Arrange var itemChangedMessageReceived = false; NewspaperItemViewModel changedItemViewModel = null; var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); collectionViewModel.CurrentItem.Should().Be(paperItemVm3, "CurrentItem should be the last item added."); collectionViewModel.Newspapers.Count.Should().Be(3, "There are now three items in the list."); var message = new RemovingNewspaperItemMessage(paperItemVm2); Messenger.Default.Register<CurrentNewspaperItemChangedMessage>(this, (msg) => { itemChangedMessageReceived = true; changedItemViewModel = msg.ItemViewModel; }); // Act Messenger.Default.Send<RemovingNewspaperItemMessage>(message); // Assert itemChangedMessageReceived.Should().Be(true, "The message was received from the collection view model."); changedItemViewModel.Should().Be(collectionViewModel.CurrentItem, "The item sent is the current item from the collection view model."); }
public void SelectedItemChangedHandler_WhenInvoked_SendsMessageNewspaperChanged() { // Arrange var messageReceived = false; NewspaperItemViewModel vm = null; var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var collectionViewModel = new NewspaperCollectionViewModel(repository); Messenger.Default.Register<CurrentNewspaperItemChangedMessage>(this, (msg) => { messageReceived = true; vm = msg.ItemViewModel; }); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); var args = new RoutedPropertyChangedEventArgs<object>(null, paperItemVm2); // Act collectionViewModel.SelectedItemChangedCommand.Execute(args); // Assert messageReceived.Should().Be(true, "The CurrentItemChangedMessage message was sent."); collectionViewModel.CurrentItem.Should().Be(paperItemVm2, "The current item is the last one added."); vm.Model.Should().Be(paperItemVm2.Model, "The added model was sent in the message."); }
public void SaveCommand_WhenInvoked_UpdatesNewspaperNameInCollectionCurrentItem() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); detailViewModel.AddItemCommand.Execute(null); var originalName = detailViewModel.Name; var newName = "Changed Newspaper Name"; detailViewModel.Name = newName; Newspaper model = null; collectionViewModel.CurrentItem.Name.Should().Be(originalName, "Name does not change until Save command."); detailViewModel.ItemViewModel.Name.Should().Be(originalName, "Name does not change until Save command."); repository.WhenForAnyArgs(r => r.Save(detailViewModel.ItemViewModel.Model)).Do( (newspaper) => { model = (Newspaper) newspaper.Args()[0]; }); // Act detailViewModel.SaveItemCommand.Execute(new SaveNewspaperItemMessage(detailViewModel.ItemViewModel)); // Assert detailViewModel.Name.Should().Be(detailViewModel.ItemViewModel.Name, "ItemViewModel should have been updated"); detailViewModel.ItemViewModel.Should().Be(collectionViewModel.CurrentItem, "CurrentItem should be the same as detail ItemViewModel"); repository.Received().Save(detailViewModel.ItemViewModel.Model); }
public void Newspapers_DeleteExistingItem_RemovesItemFromCollection() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); var itemsInCollection = new List<NewspaperItemViewModel>() {paperItemVm1, paperItemVm3}; // Act collectionViewModel.Newspapers.Remove(paperItemVm2); // Assert collectionViewModel.Newspapers.ShouldBeEquivalentTo(itemsInCollection, "The items in the object match the items in the list."); }
public void SavingItemMessageHandler_WhenInvoked_CallsRepositorySaveOnCurrentItem() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.CurrentItem.Should().Be(null, "There is no current item in an empty list."); // Act collectionViewModel.Newspapers.Add(paperItemVm1); // Assert repository.Received().Save(model1); }
public void SaveCommand_WhenInvoked_CallsRepositorySaveOnCurrentItem() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var saveCalled = false; Newspaper savedModel; var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); repository.When(x => x.Save(model1)).Do(x => RepositoryUpdateFields(x, out saveCalled, out savedModel)); collectionViewModel.Newspapers.Add(paperItemVm1); var currentItem = collectionViewModel.CurrentItem; // Act collectionViewModel.SaveCommand.Execute(paperItemVm1); // Assert repository.Received().Save(model1); currentItem.Model.Should().Be(model1, "The Save was called with the added model."); }
public void CurrentItem_WhenItemDeletedThatIsNotInTheCollection_DoesNothing() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.CurrentItem.Should().Be(paperItemVm2, "CurrentItem should be the last item added."); var count = collectionViewModel.Newspapers.Count; var itemsInCollection = collectionViewModel.Newspapers.ToList(); // Act collectionViewModel.Newspapers.Remove(paperItemVm3); // Assert collectionViewModel.Newspapers.Count.Should().Be(count, "The number of papers in the collection should not change"); collectionViewModel.Newspapers.ShouldBeEquivalentTo(itemsInCollection, "The collection remains unchanged"); }
public void CurrentItem_AfterNewItemAdded_IsNewItem() { // Arrange var repository = GetNewspaperRepository(); var model = new Newspaper(); var itemViewModel = new NewspaperItemViewModel(repository) {Model = model}; var collectionViewModel = new NewspaperCollectionViewModel(repository); // Act collectionViewModel.Newspapers.Add(itemViewModel); // Assert collectionViewModel.CurrentItem.Should().Be(itemViewModel, "After adding a new item, it becomes the CurrentItem."); }
public void SaveCommand_WhenInvoked_UpdatesCollectionCurrentItemWithNewValue() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); detailViewModel.AddItemCommand.Execute(null); collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The detail model points to the Collection CurrentItem"); var oldName = collectionViewModel.CurrentItem.Name; var newName = "Changed Newspaper Name"; detailViewModel.Name = newName; // Act detailViewModel.SaveItemCommand.Execute(null); // Assert collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The current item in the collection matches the one in the detail view model."); repository.Received().Save(detailViewModel.ItemViewModel.Model); }
public void RemovingItemMessageHandler_WhenInvoked_CallsRepositoryDeleteWithDeletedItem() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); collectionViewModel.CurrentItem.Should().Be(paperItemVm3, "CurrentItem should be the last item added."); collectionViewModel.Newspapers.Count.Should().Be(3, "There are now three items in the list."); var message = new RemovingNewspaperItemMessage(paperItemVm2); // Act Messenger.Default.Send<RemovingNewspaperItemMessage>(message); // Assert repository.Received().Save(model2); }
public void CurrentItem_AfterDeletingNotLastExistingItem_IsTheFollowingItem() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var model4 = new Newspaper {Name = "Paper 4"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var paperItemVm4 = new NewspaperItemViewModel(repository) {Model = model4}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); collectionViewModel.Newspapers.Add(paperItemVm4); collectionViewModel.CurrentItem.Should().Be(paperItemVm4, "CurrentItem should be the last item added."); // Act collectionViewModel.Newspapers.Remove(paperItemVm2); // Assert collectionViewModel.CurrentItem.Should().Be(paperItemVm3, "CurrentItem should be the first item following the one removed"); }
public void RemovingItemMessageHandler_WhenInvoked_RemovesItemFromNewspapersCollection() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); collectionViewModel.CurrentItem.Should().Be(paperItemVm3, "CurrentItem should be the last item added."); collectionViewModel.Newspapers.Count.Should().Be(3, "There are now three items in the list."); var message = new RemovingNewspaperItemMessage(paperItemVm2); // Act Messenger.Default.Send<RemovingNewspaperItemMessage>(message); // Assert collectionViewModel.Newspapers.Count.Should().Be(2, "An item should have been removed from the collection."); collectionViewModel.Newspapers.ShouldBeEquivalentTo(new List<NewspaperItemViewModel>() {paperItemVm1, paperItemVm3}, "Item paperItemVm2 was removed, leaving paperItemVm1 and paperItemVm3 in the list."); }
public void DetailViewModelReadyMessageHandler_WhenReceived_SendsCurrentItemAsCurrentItemChangedMessage() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); collectionViewModel.CurrentItem.Should().Be(paperItemVm3, "CurrentItem should be the last item added."); NewspaperItemViewModel itemFromMessage = paperItemVm2; Messenger.Default.Register<CurrentNewspaperItemChangedMessage>(this, (message) => itemFromMessage = message.ItemViewModel); // Act Messenger.Default.Send(new NewspaperDetailViewModelReady()); // Assert itemFromMessage.Model.Should().Be(model3, "When the NewspaperDetailViewModelIsReady the collection's current item is sent"); }
public void SaveCommand_WhenPopulatedAndNewItemAdded_IsExecuted() { // Arrange var saveCommandCalled = false; var repository = Substitute.For<INewspaperAdRepository>(); var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); collectionViewModel.SaveCommand = new RelayCommand(() => { saveCommandCalled = true; }); // Act collectionViewModel.Newspapers.Add(paperItemVm1); // Assert repository.Received().Save(model1); //saveCommandCalled.Should().Be(true, "Adding an item to the list causes the contents of SaveCommand to be executed"); }
public void Newspapers_AddNewItem_InsertsItemInTheCollection() { // Arrange var repository = GetNewspaperRepository(); var model1 = new Newspaper {Name = "Paper 1"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var collectionViewModel = new NewspaperCollectionViewModel(repository); // Act collectionViewModel.Newspapers.Add(paperItemVm1); // Assert collectionViewModel.Newspapers.Count.Should().Be(1, "There is one item in the collection"); collectionViewModel.Newspapers.First().Should().Be(paperItemVm1, "The item added was the same as the paper we created."); }
public void SaveCommand_WhenItemAdded_CallsRepositorySaveOnCurrentItem() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var model1 = new Newspaper {Name = "Paper 1"}; var model2 = new Newspaper {Name = "Paper 2"}; var model3 = new Newspaper {Name = "Paper 3"}; var model4 = new Newspaper {Name = "Paper 4"}; var paperItemVm1 = new NewspaperItemViewModel(repository) {Model = model1}; var paperItemVm2 = new NewspaperItemViewModel(repository) {Model = model2}; var paperItemVm3 = new NewspaperItemViewModel(repository) {Model = model3}; var paperItemVm4 = new NewspaperItemViewModel(repository) {Model = model4}; var collectionViewModel = new NewspaperCollectionViewModel(repository); // Act collectionViewModel.Newspapers.Add(paperItemVm1); collectionViewModel.Newspapers.Add(paperItemVm2); collectionViewModel.Newspapers.Add(paperItemVm3); // Assert repository.Received().Save(model1); repository.Received().Save(model2); repository.Received().Save(model3); repository.DidNotReceive().Save(paperItemVm4.Model); }