70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
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<ArgumentOutOfRangeException>(() =>
|
|
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<ArgumentOutOfRangeException>(() =>
|
|
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);
|
|
}
|
|
}
|