Test home controller

This commit is contained in:
Robert Marshall 2020-04-13 09:07:28 +01:00
parent af4e217e69
commit 2d43452fa5
3 changed files with 42 additions and 7 deletions

View file

@ -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<IBlogApi>();
var gitApi = Substitute.For<IGitApi>();
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);
}
}
}

View file

@ -8,18 +8,18 @@ using Website.ViewModels.Blog;
namespace Website.Controllers { namespace Website.Controllers {
public class HomeController : Controller { public class HomeController : Controller {
private readonly IBlogApi _blogApi; private readonly IBlogApi _blogApi;
private readonly IGitApi _api; private readonly IGitApi _gitApi;
public HomeController(IBlogApi blogApi, IGitApi api) { public HomeController(IBlogApi blogApi, IGitApi gitApi) {
_api = api; _gitApi = gitApi;
_blogApi = blogApi; _blogApi = blogApi;
} }
public async Task<IActionResult> Index() { public async Task<IActionResult> Index() {
var post = await _blogApi.GetLatestPostAsync(); var post = await _blogApi.GetLatestPostAsync();
var repo = (await _api.GetRepositories("rob")).First(); var repo = (await _gitApi.GetRepositories("rob")).First();
var branch = (await _api.GetBranches("rob", repo.Name)).First(); var branch = (await _gitApi.GetBranches("rob", repo.Name)).First();
var commit = await _api.GetCommit("rob", repo.Name, branch.Commit.Id); var commit = await _gitApi.GetCommit("rob", repo.Name, branch.Commit.Id);
var model = new HomeViewModel { var model = new HomeViewModel {
BlogPost = new BlogPostViewModel(post, false), BlogPost = new BlogPostViewModel(post, false),

View file

@ -3,6 +3,6 @@ using Website.ViewModels.Blog;
namespace Website.ViewModels { namespace Website.ViewModels {
public class HomeViewModel { public class HomeViewModel {
public BlogPostViewModel BlogPost { get; set; } public BlogPostViewModel BlogPost { get; set; }
public GitCommitViewModel GitCommit { get; internal set; } public GitCommitViewModel GitCommit { get; set; }
} }
} }