From cfcef8b77d821eadd853e4a0d6dff7e3fe3a4cc3 Mon Sep 17 00:00:00 2001 From: Robert Marshall Date: Sat, 11 Apr 2020 09:50:26 +0100 Subject: [PATCH] Return the saved blog post --- .../BlogControllerTests.cs | 23 +++++++++---------- .../Controllers/BlogController.cs | 5 ++-- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/Robware.Api.Blog.Tests/BlogControllerTests.cs b/src/Robware.Api.Blog.Tests/BlogControllerTests.cs index 7f7e378..9c96418 100644 --- a/src/Robware.Api.Blog.Tests/BlogControllerTests.cs +++ b/src/Robware.Api.Blog.Tests/BlogControllerTests.cs @@ -162,7 +162,7 @@ namespace Robware.Api.Blog.Tests { } [Fact] - public async Task Save_WithNewSubmission_Returns200() { + public async Task Save_WithNewSubmission_ReturnsSavedPost() { var logger = Substitute.For>(); var repo = Substitute.For(); @@ -171,23 +171,23 @@ namespace Robware.Api.Blog.Tests { Title = "title" }; - var controller = new BlogController(logger, repo); - (await controller.SavePost(submission)).Should().BeOfType(); - var expected = new BlogPost { Title = "title", Draft = "content", Url = "title" }; + repo.SavePost(Arg.Any()).Returns(expected); - await repo.Received(1).SavePost(Arg.Is(post => ShouldBeEquivalentTo(post, expected))); + var controller = new BlogController(logger, repo); + (await controller.SavePost(submission)).Value.Should().Be(expected); } [Fact] - public async Task Save_WithExistingSubmission_Returns200() { + public async Task Save_WithExistingSubmission_ReturnsSavedPost() { var logger = Substitute.For>(); var repo = Substitute.For(); - repo.GetPostByIdAsync(1).Returns(new BlogPost {Content = "old content"}); + var existingPost = new BlogPost {Content = "old content"}; + repo.GetPostByIdAsync(1).Returns(existingPost); var submission = new BlogPostSubmission { Id = 1, @@ -195,17 +195,16 @@ namespace Robware.Api.Blog.Tests { Title = "title" }; - var controller = new BlogController(logger, repo); - (await controller.SavePost(submission)).Should().BeOfType(); - var expected = new BlogPost { Title = "title", Content = "old content", Draft = "new content", Url = "title" }; + repo.SavePost(existingPost).Returns(expected); - await repo.Received(1).SavePost(Arg.Is(post => ShouldBeEquivalentTo(post, expected))); + var controller = new BlogController(logger, repo); + (await controller.SavePost(submission)).Value.Should().BeEquivalentTo(expected); } [Fact] @@ -221,7 +220,7 @@ namespace Robware.Api.Blog.Tests { }; var controller = new BlogController(logger, repo); - (await controller.SavePost(submission)).Should().BeOfType(); + (await controller.SavePost(submission)).Result.Should().BeOfType(); } [Fact] diff --git a/src/Robware.Api.Blog/Controllers/BlogController.cs b/src/Robware.Api.Blog/Controllers/BlogController.cs index 91e032c..b560fc7 100644 --- a/src/Robware.Api.Blog/Controllers/BlogController.cs +++ b/src/Robware.Api.Blog/Controllers/BlogController.cs @@ -78,7 +78,7 @@ namespace Robware.Api.Blog.Controllers { } [HttpPost(nameof(SavePost))] - public async Task SavePost(BlogPostSubmission submission) { + public async Task> SavePost(BlogPostSubmission submission) { _logger.Log(LogLevel.Information, $"{nameof(SavePost)}: {nameof(submission)}={JsonConvert.SerializeObject(submission)}"); try { @@ -87,8 +87,7 @@ namespace Robware.Api.Blog.Controllers { post.UpdateTitle(submission.Title); post.UpdateDraft(submission.Content); - await _blogRepository.SavePost(post); - return Ok(); + return await _blogRepository.SavePost(post); } catch (ItemNotFoundException e) { _logger.Log(LogLevel.Error, e.Message);