Template
114 lines
4.2 KiB
C#
114 lines
4.2 KiB
C#
using NUnit.Framework;
|
|
using Strata.ContinuousImprovement.Biz.Shared;
|
|
using Strata.ContinuousImprovement.Biz.StrategicOpportunities.DistributionProcess.ChargeCode;
|
|
using Strata.ContinuousImprovement.Biz.StrategicOpportunities.Enums;
|
|
using Strata.ContinuousImprovement.Biz.Test.Unit.Utilities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using VerifyNUnit;
|
|
using VerifyTests;
|
|
|
|
namespace Strata.ContinuousImprovement.Biz.Test.Unit.StrategicOpportunities.DistributionProcess
|
|
{
|
|
public class DistributionProcessChargeCodeSqlBuilderTests : StrategicOpportunityTestsBase
|
|
{
|
|
private readonly long _testOpportunityId = 0;
|
|
private readonly Period<DateOnly> _baselinePeriod;
|
|
private readonly Period<DateOnly> _goalPeriod;
|
|
private readonly Period<DateOnly> _trackingPeriod;
|
|
private readonly double[] _rampUps;
|
|
|
|
public DistributionProcessChargeCodeSqlBuilderTests()
|
|
{
|
|
_baselinePeriod = new Period<DateOnly>(new DateOnly(2024, 1, 1), new DateOnly(2024, 12, 31));
|
|
_goalPeriod = new Period<DateOnly>(new DateOnly(2025, 1, 1), new DateOnly(2025, 12, 31));
|
|
_trackingPeriod = new Period<DateOnly>(new DateOnly(2026, 1, 1), new DateOnly(2026, 12, 31));
|
|
_rampUps = [0.1, 0.2, 0.3, 0.4];
|
|
}
|
|
|
|
[TestCaseSource(nameof(BuildInsertDistributedSqlTestCases))]
|
|
public async Task BuildInsertDistributedSqlTest(DistributionMethod methodType, DistributionStage stage)
|
|
{
|
|
// Arrange
|
|
var builder = new DistributionProcessChargeCodeSqlBuilder(
|
|
_testOpportunityId,
|
|
_baselinePeriod,
|
|
_goalPeriod,
|
|
_trackingPeriod,
|
|
_rampUps);
|
|
|
|
// Act
|
|
var result = builder.BuildInsertDistributedSql(methodType, stage);
|
|
|
|
// Assert
|
|
await Verifier.Verify(result.Sql, VerifySettings)
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
}
|
|
|
|
[TestCase(true)]
|
|
[TestCase(false)]
|
|
public async Task BuildDistributionSummarySqlTest(bool isInitiative)
|
|
{
|
|
// Arrange
|
|
var builder = new DistributionProcessChargeCodeSqlBuilder(
|
|
_testOpportunityId,
|
|
_baselinePeriod,
|
|
_goalPeriod,
|
|
_trackingPeriod,
|
|
_rampUps);
|
|
|
|
// Act
|
|
var result = builder.BuildDistributionSummarySql(isInitiative);
|
|
|
|
// Assert
|
|
await Verifier.Verify(result.Sql, VerifySettings)
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
}
|
|
|
|
[Test]
|
|
public async Task BuildUpdateDetailCommittedByRampUpSqlTest()
|
|
{
|
|
// Arrange
|
|
var builder = new DistributionProcessChargeCodeSqlBuilder(
|
|
_testOpportunityId,
|
|
_baselinePeriod,
|
|
_goalPeriod,
|
|
_trackingPeriod,
|
|
_rampUps);
|
|
|
|
// Act
|
|
var result = builder.BuildUpdateDetailCommittedByRampUpSql(_rampUps.Reverse().ToArray());
|
|
|
|
// Assert
|
|
await Verifier.Verify(result.Sql, VerifySettings)
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
}
|
|
|
|
public static IEnumerable<TestCaseData> BuildInsertDistributedSqlTestCases()
|
|
{
|
|
var distributionMethods = new[]
|
|
{
|
|
DistributionMethod.Average,
|
|
DistributionMethod.Monthly
|
|
};
|
|
var distributionStages = new[]
|
|
{
|
|
DistributionStage.FromSourceToOpportunity,
|
|
DistributionStage.OpportunityChangeGoalPeriod,
|
|
DistributionStage.FromInitiativeToOpportunity,
|
|
DistributionStage.FromOpportunityToInitiative,
|
|
DistributionStage.InitiativeChangeTrackingPeriod
|
|
};
|
|
foreach (var method in distributionMethods)
|
|
{
|
|
foreach (var stage in distributionStages)
|
|
{
|
|
yield return new TestCaseData(method, stage);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |