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