using Moq; using NUnit.Framework; using Strata.ContinuousImprovement.Api.SnowflakeControllers; using Strata.DecisionSupport.Biz.Mapperly; using Strata.DecisionSupport.Biz.Services; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading; using System.Threading.Tasks; using VerifyNUnit; using VerifyTests; using Encounters = Strata.DecisionSupport.Biz.Encounters; using Parameters = Strata.DecisionSupport.Biz.Parameters; namespace Strata.ContinuousImprovement.Api.Test.Unit.SnowflakeControllers { [ExcludeFromCodeCoverage] [TestFixture, Category("Unit"), Category("Controller")] public class UtilizationVariationControllerTest { public VerifySettings verifySettings; private UtilizationVariationController controller; [SetUp] public void SetUp() { var charges = new List { new Encounters.ChargeInfo() }; var jazzCharges = charges.Select(c => JazzEncounterInfoMapper.MapToJazz(c)); var service = Mock.Of(); controller = new UtilizationVariationController(service); verifySettings = TestExtensions.TestSettings(); } [Test] public async Task TestController() { var controllerExists = controller != null; await Verifier.Verify(controllerExists, verifySettings) .UseFileName(TestContext.CurrentContext.TestName()); } [TestCaseSource(nameof(GetChargeInfoTestCases))] public async Task TestGetChargeInfo(Guid opportunityGuid, IEnumerable chargeCodeIds) { var queryInfo = new Parameters.ChargeQueryInfo(Guid.NewGuid(), 10, chargeCodeIds.ToList(), opportunityGuid); var response = await controller.GetChargeInfoAsync(queryInfo, CancellationToken.None); await Verifier.Verify(response, verifySettings) .UseFileName(TestContext.CurrentContext.TestName()); } [TestCaseSource(nameof(GetChargeInfoTestCases))] public async Task TestGetAllChargeInfo(Guid opportunityGuid, IEnumerable chargeCodeIds) { var queryInfo = new Parameters.AllChargeQueryInfo(opportunityGuid, chargeCodeIds.ToList()); var response = await controller.GetAllChargeInfoAsync(queryInfo, CancellationToken.None); await Verifier.Verify(response, verifySettings) .UseFileName(TestContext.CurrentContext.TestName()); } public static IEnumerable GetChargeInfoTestCases() { yield return new TestCaseData(Guid.Empty, Enumerable.Empty()) .SetName("{m} Empty OpportunityGuid"); yield return new TestCaseData(Guid.Empty, new[] { 1 }) .SetName("{m} with ChargeCodes"); yield return new TestCaseData(Guid.NewGuid(), new[] { 1 }) .SetName("{m} with Opportunity and ChargeCodes"); } } }