Template
86 lines
4.2 KiB
C#
86 lines
4.2 KiB
C#
using Microsoft.Data.SqlClient;
|
|
using Moq;
|
|
using NUnit.Framework;
|
|
using Strata.ContinuousImprovement.Biz.ChargeCode.Opportunities;
|
|
using Strata.ContinuousImprovement.Biz.DbContexts.Snowflake;
|
|
using Strata.ContinuousImprovement.Biz.Shared;
|
|
using Strata.ContinuousImprovement.Biz.Test.Unit.Utilities;
|
|
using Strata.ContinuousImprovement.Biz.Utilities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using VerifyNUnit;
|
|
using VerifyTests;
|
|
|
|
namespace Strata.ContinuousImprovement.Biz.Test.Unit.ChargeCode.Opportunities
|
|
{
|
|
[TestFixture, Category("Unit")]
|
|
public class OpportunityDetailQueryTests
|
|
{
|
|
private VerifySettings _verifySettings;
|
|
private Biz.Configuration.Configuration _configuration;
|
|
|
|
[SetUp]
|
|
public void TestSetup()
|
|
{
|
|
_configuration = Mock.Of<Biz.Configuration.Configuration>();
|
|
_verifySettings = TestExtensions.TestSettings();
|
|
}
|
|
|
|
[TestCaseSource(nameof(OpportunityDetailQueryTestCases))]
|
|
public async Task OpportunityDetailQueryTest(OpportunityLevel opportunityLevel, IEnumerable<SqlParameter> sqlParameters, QueryHelper encounterQueryHelper, QueryHelper opportunityLevelQueryHelper, bool isUsingSnowflake)
|
|
{
|
|
var query = new OpportunityDetailQuery(opportunityLevel, encounterQueryHelper, opportunityLevelQueryHelper, isUsingSnowflake);
|
|
var result = isUsingSnowflake
|
|
? query.GetQuery().ConvertSqlToSnowflakeParameterSyntax()
|
|
: query.GetQuery().InterpolateQueryArrayValues(ref sqlParameters);
|
|
await Verifier.Verify(result, _verifySettings)
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
}
|
|
|
|
public static IEnumerable<TestCaseData> OpportunityDetailQueryTestCases()
|
|
{
|
|
var configuration = Mock.Of<Biz.Configuration.Configuration>();
|
|
configuration.DepartmentRollupGlobalId = "";
|
|
var sqlParameters = new SqlParameter[] {
|
|
new SqlParameter("@chargeCodeIds", new List<int> { 1, 2, 3 }),
|
|
new SqlParameter("@caseTypeIds", new List<int> { 7, 8, 9 }),
|
|
new SqlParameter("@oppLevelIds", new List<int>{ 4, 5, 6 }),
|
|
new SqlParameter("@startDate", new DateTime(2023,1,1)),
|
|
new SqlParameter("@endDate", new DateTime(2024,1,1)),
|
|
new SqlParameter("@isBaseline", true)
|
|
};
|
|
|
|
foreach (var parameterName in new[] { "@caseTypeIds", "@indicatorIds" })
|
|
{
|
|
sqlParameters[1].ParameterName = parameterName;
|
|
foreach (var isUsingSnowflake in new[] { true, false })
|
|
{
|
|
foreach (var oppLevel in Enum.GetValues<OpportunityLevel>())
|
|
{
|
|
switch (oppLevel)
|
|
{
|
|
case OpportunityLevel.ServiceLine:
|
|
foreach (var serviceLine in new[] { "Sg2 Service Line Crosswalk", "Service Line" })
|
|
{
|
|
yield return new TestCaseData(oppLevel, sqlParameters,
|
|
new EncounterGroupQueryHelper(sqlParameters),
|
|
new OpportunityLevelQueryHelper(oppLevel, configuration, serviceLine, $"{(serviceLine.Replace(" ", ""))}Id"), isUsingSnowflake)
|
|
.SetName($"{{m}} {Enum.GetName<OpportunityLevel>(oppLevel)} {parameterName.Substring(1)} {serviceLine} {(isUsingSnowflake ? "Snowflake" : "")}");
|
|
}
|
|
break;
|
|
default:
|
|
yield return new TestCaseData(oppLevel, sqlParameters,
|
|
new EncounterGroupQueryHelper(sqlParameters),
|
|
new OpportunityLevelQueryHelper(oppLevel, configuration, "", ""), isUsingSnowflake)
|
|
.SetName($"{{m}} {Enum.GetName<OpportunityLevel>(oppLevel)} {parameterName.Substring(1)} Default {(isUsingSnowflake ? "Snowflake" : "")}");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|