feat(datasync): add ScheduleDefaults to PipelinesRoot
Add ScheduleDefaults? parameter to PipelinesRoot record and EffectiveScheduleDefaults computed property that returns defaults when null. Updates all existing test usages to include the new parameter.
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using JdeScoping.DataSync.Configuration;
|
||||
using Shouldly;
|
||||
|
||||
namespace JdeScoping.DataSync.Tests.Configuration;
|
||||
|
||||
public class PipelinesRootTests
|
||||
{
|
||||
[Fact]
|
||||
public void EffectiveScheduleDefaults_WhenNull_ReturnsDefaults()
|
||||
{
|
||||
var root = new PipelinesRoot(null, null, new Dictionary<string, PipelineConfig>());
|
||||
|
||||
var defaults = root.EffectiveScheduleDefaults;
|
||||
|
||||
defaults.ShouldNotBeNull();
|
||||
defaults.Mass.IntervalMinutes.ShouldBe(10080);
|
||||
defaults.Daily.IntervalMinutes.ShouldBe(1440);
|
||||
defaults.Hourly.IntervalMinutes.ShouldBe(60);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EffectiveScheduleDefaults_WhenProvided_ReturnsProvided()
|
||||
{
|
||||
var customDefaults = new ScheduleDefaults
|
||||
{
|
||||
Mass = new ScheduleConfig { IntervalMinutes = 20000 }
|
||||
};
|
||||
var root = new PipelinesRoot(null, customDefaults, new Dictionary<string, PipelineConfig>());
|
||||
|
||||
var defaults = root.EffectiveScheduleDefaults;
|
||||
|
||||
defaults.Mass.IntervalMinutes.ShouldBe(20000);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EffectiveSettings_WhenNull_ReturnsDefaults()
|
||||
{
|
||||
var root = new PipelinesRoot(null, null, new Dictionary<string, PipelineConfig>());
|
||||
|
||||
var settings = root.EffectiveSettings;
|
||||
|
||||
settings.ShouldNotBeNull();
|
||||
settings.Timezone.ShouldBe("UTC");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EffectiveSettings_WhenProvided_ReturnsProvided()
|
||||
{
|
||||
var customSettings = new PipelineSettings("America/New_York");
|
||||
var root = new PipelinesRoot(customSettings, null, new Dictionary<string, PipelineConfig>());
|
||||
|
||||
var settings = root.EffectiveSettings;
|
||||
|
||||
settings.Timezone.ShouldBe("America/New_York");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Pipelines_WhenProvided_StoresCorrectly()
|
||||
{
|
||||
var pipelines = new Dictionary<string, PipelineConfig>
|
||||
{
|
||||
["TestTable"] = CreateMinimalPipelineConfig()
|
||||
};
|
||||
var root = new PipelinesRoot(null, null, pipelines);
|
||||
|
||||
root.Pipelines.ShouldContainKey("TestTable");
|
||||
root.Pipelines["TestTable"].Destination.Table.ShouldBe("TestTable");
|
||||
}
|
||||
|
||||
private static PipelineConfig CreateMinimalPipelineConfig()
|
||||
{
|
||||
return new PipelineConfig(
|
||||
new SourceConfig("lotfinder", "SELECT 1", null, null),
|
||||
new Dictionary<string, SyncModeConfig>
|
||||
{
|
||||
["mass"] = new SyncModeConfig(null, true, true),
|
||||
["incremental"] = new SyncModeConfig("-1d")
|
||||
},
|
||||
null,
|
||||
new DestinationConfig("TestTable", ["Id"], null),
|
||||
null,
|
||||
null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user