public void WhenArticleViewModelSelectedArticleChanged_NewsReaderViewModelNewsArticleUpdated() { // Prepare INewsFeedService newsFeedService = new Mock<INewsFeedService>().Object; IRegionManager regionManager = new Mock<IRegionManager>().Object; var tickerSymbolSelectedEvent = new Mock<TickerSymbolSelectedEvent>().Object; var mockEventAggregator = new Mock<IEventAggregator>(); mockEventAggregator.Setup(x => x.GetEvent<TickerSymbolSelectedEvent>()).Returns(tickerSymbolSelectedEvent); IEventAggregator eventAggregator = mockEventAggregator.Object; ArticleViewModel articleViewModel = new ArticleViewModel(newsFeedService, regionManager, eventAggregator); NewsReaderViewModel newsReaderViewModel = new NewsReaderViewModel(); var controller = new NewsController(articleViewModel, newsReaderViewModel); NewsArticle newsArticle = new NewsArticle() { Title = "SomeTitle", Body = "Newsbody" }; // Act articleViewModel.SelectedArticle = newsArticle; // Verify Assert.AreSame(newsArticle, newsReaderViewModel.NewsArticle); }
public NewsController(ArticleViewModel articleViewModel, NewsReaderViewModel newsReaderViewModel) { this.articleViewModel = articleViewModel; this.newsReaderViewModel = newsReaderViewModel; if (articleViewModel != null) { this.articleViewModel.PropertyChanged += this.ArticleViewModel_PropertyChanged; } }
public void WhenConstructedWithNullRegionManager_Throws() { // Prepare INewsFeedService newsFeedService = new Mock<INewsFeedService>().Object; IRegionManager regionManager = null; IEventAggregator eventAggregator = new Mock<IEventAggregator>().Object; // Act ArticleViewModel actual = new ArticleViewModel(newsFeedService, regionManager, eventAggregator); // Verify }
public void WhenConstructed_InitializesValues() { // Prepare INewsFeedService newsFeedService = new Mock<INewsFeedService>().Object; IRegionManager regionManager = new Mock<IRegionManager>().Object; var tickerSymbolSelectedEvent = new Mock<TickerSymbolSelectedEvent>().Object; var mockEventAggregator = new Mock<IEventAggregator>(); mockEventAggregator.Setup(x => x.GetEvent<TickerSymbolSelectedEvent>()).Returns(tickerSymbolSelectedEvent); IEventAggregator eventAggregator = mockEventAggregator.Object; // Act ArticleViewModel actual = new ArticleViewModel(newsFeedService, regionManager, eventAggregator); // Verify Assert.IsNull(actual.Articles); Assert.IsNull(actual.SelectedArticle); Assert.IsNotNull(actual.ShowArticleListCommand); Assert.IsNotNull(actual.ShowNewsReaderCommand); }
public ArticleView(ArticleViewModel viewModel, INewsController newsController) { InitializeComponent(); ViewModel = viewModel; NewsController = newsController; }
public void WhenShowNewsReaderCommandInvokes_RegionIsNavigated() { // Prepare NewsArticle newsArticle = new NewsArticle(); var tickerSymbolSelectedEvent = new Mock<TickerSymbolSelectedEvent>().Object; Mock<INewsFeedService> mockNewsFeedService = new Mock<INewsFeedService>(); Mock<IRegionManager> mockRegionManager = new Mock<IRegionManager>(); Mock<IEventAggregator> mockEventAggregator = new Mock<IEventAggregator>(); mockEventAggregator.Setup(x => x.GetEvent<TickerSymbolSelectedEvent>()).Returns(tickerSymbolSelectedEvent); INewsFeedService newsFeedService = mockNewsFeedService.Object; IRegionManager regionManager = mockRegionManager.Object; IEventAggregator eventAggregator = mockEventAggregator.Object; ArticleViewModel target = new ArticleViewModel(newsFeedService, regionManager, eventAggregator); bool propertyChangedRaised = false; target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "SelectedArticle") { propertyChangedRaised = true; } }; // Act target.SelectedArticle = newsArticle; // Verify Assert.AreEqual(newsArticle, target.SelectedArticle); Assert.IsTrue(propertyChangedRaised); }
public void WhenCompanySymbolSet_NewsArticlesAreRetrieved() { // Prepare string companySymbol = "CompanySymbol"; List<NewsArticle> articles = new List<NewsArticle>(); var tickerSymbolSelectedEvent = new Mock<TickerSymbolSelectedEvent>().Object; Mock<INewsFeedService> mockNewsFeedService = new Mock<INewsFeedService>(); mockNewsFeedService.Setup(x => x.GetNews(companySymbol)).Returns(articles).Verifiable(); Mock<IRegionManager> mockRegionManager = new Mock<IRegionManager>(); Mock<IEventAggregator> mockEventAggregator = new Mock<IEventAggregator>(); mockEventAggregator.Setup(x => x.GetEvent<TickerSymbolSelectedEvent>()).Returns(tickerSymbolSelectedEvent); INewsFeedService newsFeedService = mockNewsFeedService.Object; IRegionManager regionManager = mockRegionManager.Object; IEventAggregator eventAggregator = mockEventAggregator.Object; ArticleViewModel target = new ArticleViewModel(newsFeedService, regionManager, eventAggregator); bool propertyChangedRaised = false; target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "Articles") { propertyChangedRaised = true; } }; // Act target.CompanySymbol = companySymbol; // Verify mockNewsFeedService.VerifyAll(); Assert.AreSame(target.Articles, articles); Assert.IsTrue(propertyChangedRaised); }