From 2d43452fa511de5e9ee6081c8dbd7d49e8a86e34 Mon Sep 17 00:00:00 2001 From: Robert Marshall Date: Mon, 13 Apr 2020 09:07:28 +0100 Subject: [PATCH] Test home controller --- .../Controllers/HomeControllerTests.cs | 35 +++++++++++++++++++ src/Website/Controllers/HomeController.cs | 12 +++---- src/Website/ViewModels/HomeViewModel.cs | 2 +- 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 src/Website.Tests/Controllers/HomeControllerTests.cs diff --git a/src/Website.Tests/Controllers/HomeControllerTests.cs b/src/Website.Tests/Controllers/HomeControllerTests.cs new file mode 100644 index 0000000..82275b3 --- /dev/null +++ b/src/Website.Tests/Controllers/HomeControllerTests.cs @@ -0,0 +1,35 @@ +using System.Threading.Tasks; +using FluentAssertions; +using Microsoft.AspNetCore.Mvc; +using NSubstitute; +using Website.Controllers; +using Website.Data; +using Website.Models.Blog; +using Website.Models.Git; +using Website.ViewModels; +using Website.ViewModels.Blog; +using Xunit; + +namespace Website.Tests.Controllers { + public class HomeControllerTests { + [Fact] + public async Task Index_ReturnsViewWithModel() { + var blogApi = Substitute.For(); + var gitApi = Substitute.For(); + + blogApi.GetLatestPostAsync().Returns(new BlogPost{Content = ""}); + + gitApi.GetRepositories("rob").Returns(new[] {new Repository()}); + gitApi.GetBranches("rob", null).Returns(new[] {new Branch {Commit = new Commit()}}); + gitApi.GetCommit("rob", null, null).Returns(new Commit()); + + var expectation = new HomeViewModel { + BlogPost = new BlogPostViewModel(new BlogPost{Content = ""}, false), + GitCommit = new GitCommitViewModel(new Repository(), new Branch{Commit = new Commit()}, new Commit()) + }; + + var controller = new HomeController(blogApi, gitApi); + (await controller.Index() as ViewResult).Model.Should().BeEquivalentTo(expectation); + } + } +} \ No newline at end of file diff --git a/src/Website/Controllers/HomeController.cs b/src/Website/Controllers/HomeController.cs index ceee379..35d7b7c 100644 --- a/src/Website/Controllers/HomeController.cs +++ b/src/Website/Controllers/HomeController.cs @@ -8,18 +8,18 @@ using Website.ViewModels.Blog; namespace Website.Controllers { public class HomeController : Controller { private readonly IBlogApi _blogApi; - private readonly IGitApi _api; + private readonly IGitApi _gitApi; - public HomeController(IBlogApi blogApi, IGitApi api) { - _api = api; + public HomeController(IBlogApi blogApi, IGitApi gitApi) { + _gitApi = gitApi; _blogApi = blogApi; } public async Task Index() { var post = await _blogApi.GetLatestPostAsync(); - var repo = (await _api.GetRepositories("rob")).First(); - var branch = (await _api.GetBranches("rob", repo.Name)).First(); - var commit = await _api.GetCommit("rob", repo.Name, branch.Commit.Id); + var repo = (await _gitApi.GetRepositories("rob")).First(); + var branch = (await _gitApi.GetBranches("rob", repo.Name)).First(); + var commit = await _gitApi.GetCommit("rob", repo.Name, branch.Commit.Id); var model = new HomeViewModel { BlogPost = new BlogPostViewModel(post, false), diff --git a/src/Website/ViewModels/HomeViewModel.cs b/src/Website/ViewModels/HomeViewModel.cs index 5b72ba9..96f0cfd 100644 --- a/src/Website/ViewModels/HomeViewModel.cs +++ b/src/Website/ViewModels/HomeViewModel.cs @@ -3,6 +3,6 @@ using Website.ViewModels.Blog; namespace Website.ViewModels { public class HomeViewModel { public BlogPostViewModel BlogPost { get; set; } - public GitCommitViewModel GitCommit { get; internal set; } + public GitCommitViewModel GitCommit { get; set; } } } \ No newline at end of file