using JdeScoping.DataSync.Etl.Pipeline; namespace JdeScoping.DataSync.Tests.Etl.Pipeline; public class EtlPipelineBuilderTests { [Fact] public void WithCommandTimeout_ValidTimeout_SetsTimeoutAndReturnsBuilder() { // Arrange var builder = new EtlPipelineBuilder(); // Act var result = builder.WithCommandTimeout(TimeSpan.FromMinutes(30)); // Assert Assert.Same(builder, result); } [Fact] public void WithCommandTimeout_NegativeTimeout_ThrowsArgumentOutOfRangeException() { // Arrange var builder = new EtlPipelineBuilder(); // Act & Assert var ex = Assert.Throws(() => builder.WithCommandTimeout(TimeSpan.FromSeconds(-1))); Assert.Equal("timeout", ex.ParamName); } [Fact] public void WithCommandTimeout_Over24Hours_ThrowsArgumentOutOfRangeException() { // Arrange var builder = new EtlPipelineBuilder(); // Act & Assert var ex = Assert.Throws(() => builder.WithCommandTimeout(TimeSpan.FromHours(25))); Assert.Equal("timeout", ex.ParamName); } [Fact] public void WithCommandTimeout_ExactlyZero_DoesNotThrow() { // Arrange var builder = new EtlPipelineBuilder(); // Act var result = builder.WithCommandTimeout(TimeSpan.Zero); // Assert Assert.Same(builder, result); } [Fact] public void WithCommandTimeout_Exactly24Hours_DoesNotThrow() { // Arrange var builder = new EtlPipelineBuilder(); // Act var result = builder.WithCommandTimeout(TimeSpan.FromHours(24)); // Assert Assert.Same(builder, result); } }