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 {
|
||||
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<IActionResult> 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),
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue