using FluentAssertions; using Microsoft.Extensions.Logging; using Moq; using Strata.ContinuousImprovement.Biz.ChargeCode.Opportunities; using Strata.ContinuousImprovement.Biz.Shared; using Strata.CoreLib.Claims; using Strata.FeatureFlags.Client; using Strata.Schema.Client; using System.Diagnostics.CodeAnalysis; using System.Security.Claims; namespace Strata.ContinuousImprovement.Biz.Test.Integration.JazzIntegrationTests { [ExcludeFromCodeCoverage] [TestFixture, Category("Integration"), Category("CCI")] internal class TestCCOpportunityDetailService : IntegrationTestBase { protected ICCOpportunityDetailService _ccOpportunityDetailService; [OneTimeSetUp] public void SetupChargeCodeDetailService() { var claims = new List { new Claim("database_guid", GmAutomationDatabase.ToString()) }; var principal = new ClaimsPrincipal(new ClaimsIdentity(claims, "TestAuth")); var claimsPrincipalMock = Mock.Of(); Mock.Get(claimsPrincipalMock) .Setup(x => x.GetCurrentClaimsPrincipal()) .Returns(principal); var featureFlagServiceMock = Mock.Of(); Mock.Get(featureFlagServiceMock) .Setup(x => x.IsEnabledAsync("is-decision-support-queries-enabled", It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); _ccOpportunityDetailService = new CCOpportunityDetailService( JazzConnBuilderFactory, Mock.Of(), SnowflakeDatabaseContext, featureFlagServiceMock, Mock.Of>(), claimsPrincipalMock); } [TestCaseSource(nameof(OpportunityCases))] public async Task OpportunityDetailQueryTest_Returns_Data(bool isBaseline, CCOpportunityDataModel opportunity) { // arrange var configuration = CreateConfiguration(); // act var results = await _ccOpportunityDetailService.GetCCOpportunityDetailQueryResult( opportunity, configuration, CancellationToken.None, isBaseline: true); // assert results.Should().NotBeNullOrEmpty(); } [TestCaseSource(nameof(OpportunityCases))] public async Task OpportunityDetailLevelCasesQueryTest_Returns_Data(bool isBaseline, CCOpportunityDataModel opportunity) { // arrange var configuration = CreateConfiguration(); // act var results = await _ccOpportunityDetailService.CCOpportunityLevelCasesQuery( opportunity, configuration, CancellationToken.None, isBaseline: true); // assert results.Should().NotBeNullOrEmpty(); } private Configuration.Configuration CreateConfiguration() { return new Configuration.Configuration { OrgDefinedEndDate = new DateTime(2024, 1, 1) }; } private static IEnumerable OpportunityCases() { yield return new TestCaseData(true, GetSystemLevelData()).SetName("System"); } private static CCOpportunityDataModel GetSystemLevelData() { return new CCOpportunityDataModel { OpportunityLevel = OpportunityLevel.Organization.ToString(), ChargeCodeJson = @"{""HierarchyPaths"":[""CC|CCRU|Blood""],""Members"":[ {""MemberGuid"":""4041e269-34c4-4a1d-bebf-c6e0a0799539"",""Name"":""10002765 - HB RBC LEUKOREDUCED EA UNIT"",""Id"":""3540""}]}", ClinicalIndicatorJson = @"{""HierarchyPaths"":[""CLINICALINDICATOR|CLINICALINDI|188""],""Members"":[{""MemberGuid"":""d1e38321-5e37-4dad-9a54-ca8599763e7a"",""Name"":""All Readmissions"",""Id"":""188""}]}", OpportunityLevelJson = @"{""HierarchyPaths"":[""SYS|SYSTEM""], ""Members"":[{""MemberGuid"":""00000000-0000-0000-0000-000000000000"", ""Id"":""1"", ""Name"":""System""}]}" }; } } }