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

            HomeController controller = new HomeController(mockGitHubService.Object);

            // Act
            ViewResult result = controller.Search("repoNameSample") as ViewResult;

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

            HomeController controller = new HomeController(mockGitHubService.Object);
            var fakeRepoName = "fakeRepoName";

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

            mockGitHubService.Setup(s => s.SearchByRepoName(fakeRepoName)).Returns(userRepositories);

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

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

            HomeController controller = new HomeController(mockGitHubService.Object);
            string fakeRepoName = null;
            IEnumerable<GitHubRepo> userRepositories = null;

            mockGitHubService.Setup(s => s.SearchByRepoName(fakeRepoName)).Returns(userRepositories);

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

            // Assert
            var userRepoList = (IEnumerable<GitHubRepoViewModel>)result.ViewData.Model;
            Assert.IsNull(userRepoList);
        }