Test home controller
This commit is contained in:
parent
af4e217e69
commit
2d43452fa5
3 changed files with 42 additions and 7 deletions
35
src/Website.Tests/Controllers/HomeControllerTests.cs
Normal file
35
src/Website.Tests/Controllers/HomeControllerTests.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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),
|
||||||
|
|
|
@ -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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue