diff --git a/server.tests/controllers/CharactersControllerTests.cs b/server.tests/controllers/CharactersControllerTests.cs index a2b4a44..cf3780c 100644 --- a/server.tests/controllers/CharactersControllerTests.cs +++ b/server.tests/controllers/CharactersControllerTests.cs @@ -3,6 +3,7 @@ using Moq; using server.Controllers.v1; using server.Models; using server.Persistence.Repositories; +using System.ComponentModel.DataAnnotations; using System.Net; namespace tests.controllers @@ -74,5 +75,23 @@ namespace tests.controllers Assert.Equal(HttpStatusCode.OK, (HttpStatusCode)result.StatusCode); Assert.Single(data); } + + [Fact] + public async Task GetCharactersAsync_RepoThrowsException_Returns500StatusWithProblemDetail() + { + var filter = new CharacterFilter(); + + _mockRepo + .Setup(repo => repo.GetCharactersAsync(filter)) + .Throws(new Exception()); + + var result = await _controller.GetCharactersAsync(filter) as ObjectResult; + var data = result.Value; + + _mockRepo.Verify(repo => repo.GetCharactersAsync(It.IsAny()), Times.Once()); + Assert.IsType(result); + Assert.IsType(data); + Assert.Equal(HttpStatusCode.InternalServerError, (HttpStatusCode)result.StatusCode); + } } }