using Microsoft.AspNetCore.Mvc; using Moq; using server.Controllers.v1; using server.Models; using server.Persistence.Repositories; using System.Net; namespace tests.controllers { public class CharactersControllerTests { private readonly Mock _mockRepo; private readonly CharactersController _controller; public CharactersControllerTests() { _mockRepo = new Mock(); _controller = new CharactersController(_mockRepo.Object); } [Fact] public async Task GetCharactersAsync_NoFilterParamsNoCharacters_Returns200StatusWithEmptyCollection() { var filter = new CharacterFilter(); _mockRepo .Setup(repo => repo.GetCharactersAsync(filter)) .ReturnsAsync( new List()); var result = await _controller.GetCharactersAsync(filter) as ObjectResult; var data = result?.Value as List; _mockRepo.Verify(repo => repo.GetCharactersAsync(It.IsAny()), Times.Once()); Assert.IsType(result); Assert.IsType>(data); Assert.Equal(HttpStatusCode.OK, (HttpStatusCode)result.StatusCode); Assert.Empty(data); } } }