using FluentAssertions; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; using Strata.ContinuousImprovement.Api.Controllers.JazzQvi; using Strata.ContinuousImprovement.Biz.QualityVariation.QVI; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Strata.ContinuousImprovement.Api.Test.Unit.Controllers { [TestFixture, Category("Unit"), Category("Controller")] public class QviEncountersControllerTests { private Mock _serviceMock; private QviEncountersController _controller; [SetUp] public void SetUp() { _serviceMock = new Mock(); _controller = new QviEncountersController(_serviceMock.Object); } [Test] public async Task Get_WhenConfigurationGuidIsEmpty_ReturnsBadRequest() { var result = await _controller.Get(Guid.Empty, DateTime.UtcNow, DateTime.UtcNow, CancellationToken.None); result.Result.Should().BeOfType(); _serviceMock.Verify(s => s.GetEncounterInfoAsync(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); } [Test] public async Task Get_WhenConfigurationGuidIsValid_ReturnsOk() { var configurationGuid = Guid.NewGuid(); var startDate = new DateTime(2024, 1, 1); var endDate = new DateTime(2024, 12, 31); var expected = new[] { new EncounterInfo { EncounterId = 11, EncounterRecordNumber = "enc-11" } }; _serviceMock .Setup(s => s.GetEncounterInfoAsync(configurationGuid, startDate, endDate, It.IsAny())) .ReturnsAsync(expected); var result = await _controller.Get(configurationGuid, startDate, endDate, CancellationToken.None); result.Result.Should().BeOfType(); var okResult = result.Result as OkObjectResult; var value = okResult?.Value as System.Collections.Generic.IEnumerable; value.Should().NotBeNull(); value!.Single().EncounterId.Should().Be(11); _serviceMock.Verify(s => s.GetEncounterInfoAsync(configurationGuid, startDate, endDate, It.IsAny()), Times.Once); } } }