public void WhenSelectedViewChanged_ArticlesInitilized()
        {
            //Prepare
            Mock<INewsService> mockedNewsService = new Mock<INewsService>();
            Article[] articles = new Article[] {
                new Article { ArticleType = ArticleTypes.Major, Keywords = new string[] { "Diablo" } },
                new Article { ArticleType = ArticleTypes.Notification, Keywords = new string[] { "Maintenance" } }
            };

            mockedNewsService.Setup(x => x.GetNewsAsync(It.Is<string[]>(keywords => keywords.Length > 0), It.IsAny<CancellationToken>())).Returns(Task.FromResult(articles));

            GameViewModel game = new GameViewModel(mockedNewsService.Object);
            game.BackgroundImage = "testimage";
            game.Keywords = new string[] { "Diablo", "Maintenance" };

            Mock<IGameService> mockedGameService = new Mock<IGameService>();
            mockedGameService.Setup(x => x.GetGames()).Returns(new GameViewModel[] { game }).Verifiable();

            GamesViewModel target = new GamesViewModel(mockedGameService.Object);

            //Act
            target.SelectedGameView = game;
            Thread.Sleep(3000);

            //Verify
            Assert.IsNotNull(game.MajorArticles);
            Assert.IsNotNull(game.MinorArticles);
        }
        public void WhenConstructed_IntializesValues()
        {
            //Prepare
            Mock<INewsService> mockedNewService = new Mock<INewsService>();
            mockedNewService.Setup(x => x.GetNews(It.IsAny<string[]>()));

            GameViewModel target = new GameViewModel(mockedNewService.Object);
            target.BackgroundImage = "testimage";

            Mock<IGameService> mockedGameService = new Mock<IGameService>();
            mockedGameService.Setup(x => x.GetGames()).Returns(new GameViewModel[] { target }).Verifiable();

            GamesViewModel viewmodel = new GamesViewModel(mockedGameService.Object);

            //Act
            viewmodel.SelectedGameView = target;

            //Verify
            Assert.AreEqual(target, viewmodel.SelectedGameView);
            Assert.AreEqual("testimage", viewmodel.BackgroundImage);
            mockedGameService.VerifyAll();
        }
        public void WhenSelectedViewChanged_PropertyIsUpdated()
        {
            //Prepare
            Mock<INewsService> mockedNewService = new Mock<INewsService>();
            mockedNewService.Setup(x => x.GetNews(It.IsAny<string[]>()));

            GameViewModel game = new GameViewModel(mockedNewService.Object);
            game.BackgroundImage = "testimage";

            Mock<IGameService> mockedGameService = new Mock<IGameService>();
            mockedGameService.Setup(x => x.GetGames()).Returns(new GameViewModel[] { game }).Verifiable();

            GamesViewModel viewmodel = new GamesViewModel(mockedGameService.Object);

            bool backgroundImageChangedRaised = false;
            viewmodel.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "BackgroundImage")
                {
                    backgroundImageChangedRaised = true;
                }
            };

            bool selectedGameViewChangedRaised = false;
            viewmodel.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "SelectedGameView")
                {
                    selectedGameViewChangedRaised = true;
                }
            };

            //Act
            viewmodel.SelectedGameView = game;

            //Verify
            Assert.AreSame(game, viewmodel.SelectedGameView);
            Assert.IsTrue(backgroundImageChangedRaised);
            Assert.IsTrue(selectedGameViewChangedRaised);
        }
 public GamesView(GamesViewModel viewmodel)
 {
     this.DataContext = viewmodel;
     InitializeComponent();
 }