public void IndexAction_ReturnsListRepositoriesView()
        {
            // Arrange
            var mockGitHubService = new Mock<IGitHubRepoService>();

            HomeController controller = new HomeController(mockGitHubService.Object);

            // Act
            ViewResult result = controller.Index() as ViewResult;

            // Assert
            Assert.AreEqual("ListRepositories", result.ViewName);
        }
        public void IndexAction_ReturnsUserRepositoriesList()
        {
            // Arrange
            var mockGitHubService = new Mock<IGitHubRepoService>(MockBehavior.Strict);

            HomeController controller = new HomeController(mockGitHubService.Object);
            var userName = controller.DefaultUserRepository;

            // create a list of repositories to return
            var userRepositories = MockHelper.GenerateFakeRepos(userName);

            mockGitHubService.Setup(s => s.GetUserRepositories(userName)).Returns(userRepositories);

            // Act
            var result = controller.Index() as ViewResult;

            // Assert
            mockGitHubService.Verify(t => t.GetUserRepositories(userName));
            var userRepoList = (IEnumerable<GitHubRepoViewModel>)result.ViewData.Model;
            Assert.IsTrue(userRepoList.Count()>0);
        }
        public void IndexAction_IfDefaultUserRepositoyIsNull_ReturnsException()
        {
            // Arrange
            var mockGitHubService = new Mock<IGitHubRepoService>();

            HomeController controller = new HomeController(mockGitHubService.Object);

            // force empty configuration
            var userName = string.Empty;
            controller.DefaultUserRepository = userName;

            // create a list of repositories to return
            var userRepositories = MockHelper.GenerateFakeRepos(userName);

            mockGitHubService.Setup(s => s.GetUserRepositories(userName)).Returns(userRepositories);

            // Act
            var result = controller.Index() as ViewResult;

            // Assert
            // automatic assert
        }