refactor: relocate options classes to dedicated Options folders

Move configuration options from Core/DataAccess/DataSync/ExcelIO to
dedicated Options folders within each project for better organization.
Update all references and tests accordingly.
This commit is contained in:
Joseph Doherty
2026-01-03 08:55:08 -05:00
parent 3cb73eb09f
commit ec4c8fab87
52 changed files with 4628 additions and 202 deletions
@@ -1,5 +1,5 @@
using System.Diagnostics.Metrics;
using JdeScoping.DataSync.Configuration;
using JdeScoping.DataSync.Options;
using JdeScoping.DataSync.Contracts;
using JdeScoping.DataSync.Telemetry;
using Microsoft.Extensions.DependencyInjection;
@@ -22,7 +22,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenDisabled_ExitsImmediately()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = false
});
@@ -56,7 +56,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenEnabled_StartsAndCanBeStopped()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(100)
@@ -106,7 +106,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_GracefulShutdown_CompletesCleanly()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromSeconds(10) // Long interval
@@ -152,7 +152,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_AtStartup_CallsCloseOpenUpdateEntries()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -199,7 +199,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenCloseOpenEntriesFindsEntries_LogsAndContinues()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -248,7 +248,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenCloseOpenEntriesThrows_ContinuesStarting()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -301,7 +301,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_CallsOrchestratorForParallelExecution()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50),
@@ -349,7 +349,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenOrchestratorThrows_ContinuesNextCycle()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -404,7 +404,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenCancelled_StopsGracefully()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromSeconds(10)
@@ -462,7 +462,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_PassesCancellationTokenToOrchestrator()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -510,7 +510,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenCancelledDuringDelay_ExitsCleanly()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMinutes(5) // Long delay
@@ -562,7 +562,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_UsesNewScopePerCycle()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -610,7 +610,7 @@ public class DataSyncServiceTests
public async Task ExecuteAsync_WhenSyncFails_ContinuesRunning()
{
// Arrange
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
Enabled = true,
CheckInterval = TimeSpan.FromMilliseconds(50)
@@ -1,7 +1,7 @@
using JdeScoping.Core.Models;
using JdeScoping.Core.Models.Enums;
using JdeScoping.Core.Models.Infrastructure;
using JdeScoping.DataSync.Configuration;
using JdeScoping.DataSync.Options;
using JdeScoping.DataSync.Contracts;
using JdeScoping.DataSync.Services;
using Microsoft.Extensions.Logging.Abstractions;
@@ -23,7 +23,7 @@ public class ScheduleCheckerTests
public ScheduleCheckerTests()
{
_repository = Substitute.For<IDataUpdateRepository>();
_options = Options.Create(new DataSyncOptions
_options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
LookbackMultiplier = 3,
DataSources = []
@@ -1,6 +1,6 @@
using System.Diagnostics.Metrics;
using JdeScoping.Core.Models.Enums;
using JdeScoping.DataSync.Configuration;
using JdeScoping.DataSync.Options;
using JdeScoping.DataSync.Contracts;
using JdeScoping.DataSync.Models;
using JdeScoping.DataSync.Services;
@@ -27,7 +27,7 @@ public class SyncOrchestratorTests
public SyncOrchestratorTests()
{
_scheduleChecker = Substitute.For<IScheduleChecker>();
_options = Options.Create(new DataSyncOptions
_options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
MaxDegreeOfParallelism = 4
});
@@ -176,7 +176,7 @@ public class SyncOrchestratorTests
public async Task ExecutePendingSyncsAsync_RespectsMaxDegreeOfParallelism()
{
// Arrange: Create 10 tasks but limit parallelism to 2
var options = Options.Create(new DataSyncOptions
var options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
MaxDegreeOfParallelism = 2
});
@@ -5,7 +5,7 @@ using JdeScoping.Core.Interfaces;
using JdeScoping.Core.Models;
using JdeScoping.Core.Models.Enums;
using JdeScoping.DataAccess.Interfaces;
using JdeScoping.DataSync.Configuration;
using JdeScoping.DataSync.Options;
using JdeScoping.DataSync.Contracts;
using JdeScoping.DataSync.Models;
using JdeScoping.DataSync.Services;
@@ -40,7 +40,7 @@ public class TableSyncOperationTests
_bulkMergeHelper = Substitute.For<IBulkMergeHelper>();
_configRegistry = Substitute.For<IMergeConfigurationRegistry>();
_options = Options.Create(new DataSyncOptions
_options = Microsoft.Extensions.Options.Options.Create(new DataSyncOptions
{
BatchSize = 1000,
BulkCopyBatchSize = 100