diff --git a/src/Robware.Api.Blog.Tests/BlogControllerTests.cs b/src/Robware.Api.Blog.Tests/BlogControllerTests.cs index deb9f7f..955e3bf 100644 --- a/src/Robware.Api.Blog.Tests/BlogControllerTests.cs +++ b/src/Robware.Api.Blog.Tests/BlogControllerTests.cs @@ -108,5 +108,29 @@ namespace Robware.Api.Blog.Tests { var controller = new BlogController(logger, repo); (await controller.GetLatestPosts(1, 1000)).Result.Should().BeOfType(); } + + [Fact] + public async Task GetLatestPost_ReturnsBlogPosts() { + var logger = Substitute.For>(); + var repo = Substitute.For(); + + repo.GetLatestPostAsync().Returns(new BlogPost()); + + var expectation = new BlogPost(); + + var controller = new BlogController(logger, repo); + (await controller.GetLatestPost()).Value.Should().BeEquivalentTo(expectation); + } + + [Fact] + public async Task GetLatestPost_WhenNoPostExists_Returns404() { + var logger = Substitute.For>(); + var repo = Substitute.For(); + + repo.GetLatestPostAsync().Throws(new ItemNotFoundException("", null)); + + var controller = new BlogController(logger, repo); + (await controller.GetLatestPost()).Result.Should().BeOfType(); + } } } diff --git a/src/Robware.Api.Blog/Controllers/BlogController.cs b/src/Robware.Api.Blog/Controllers/BlogController.cs index 72f1a6d..06f9d48 100644 --- a/src/Robware.Api.Blog/Controllers/BlogController.cs +++ b/src/Robware.Api.Blog/Controllers/BlogController.cs @@ -1,5 +1,4 @@ -using System; -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; @@ -53,8 +52,14 @@ namespace Robware.Api.Blog.Controllers { } [HttpGet(nameof(GetLatestPost))] - public async Task GetLatestPost() { - return null; + public async Task> GetLatestPost() { + try { + return await _blogRepository.GetLatestPostAsync(); + } + catch (ItemNotFoundException e) { + _logger.Log(LogLevel.Error, e.Message); + return NotFound("Could not find blog post"); + } } //[HttpGet]