76 lines
2.3 KiB
C#
76 lines
2.3 KiB
C#
using JdeScoping.DataAccess.Interfaces;
|
|
using JdeScoping.DataSync.Etl.Destinations;
|
|
using NSubstitute;
|
|
|
|
namespace JdeScoping.DataSync.Tests.Etl.Destinations;
|
|
|
|
public class DbBulkImportDestinationTests
|
|
{
|
|
[Fact]
|
|
public void Constructor_SetsDestinationName()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var dest = new DbBulkImportDestination(factory, "WorkOrder");
|
|
Assert.Equal("BulkImport:WorkOrder", dest.DestinationName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullFactory_ThrowsArgumentNullException()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(() => new DbBulkImportDestination(null!, "WorkOrder"));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullTableName_ThrowsArgumentNullException()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
Assert.Throws<ArgumentNullException>(() => new DbBulkImportDestination(factory, null!));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_EmptyTableName_ThrowsArgumentException()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
Assert.Throws<ArgumentException>(() => new DbBulkImportDestination(factory, ""));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(0)] // 0 means default
|
|
[InlineData(5000)]
|
|
[InlineData(50000)]
|
|
public void Constructor_VariousBatchSizes_Succeeds(int batchSize)
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var dest = new DbBulkImportDestination(factory, "WorkOrder", batchSize: batchSize);
|
|
Assert.NotNull(dest);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_CustomTimeout_SetsTimeout()
|
|
{
|
|
// Arrange & Act
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var dest = new DbBulkImportDestination(
|
|
factory,
|
|
"TestTable",
|
|
commandTimeoutSeconds: 1800);
|
|
|
|
// Assert - can't directly test private field, but constructor should accept it
|
|
Assert.NotNull(dest);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_ZeroTimeout_UsesDefault()
|
|
{
|
|
// Arrange & Act
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var dest = new DbBulkImportDestination(
|
|
factory,
|
|
"TestTable",
|
|
commandTimeoutSeconds: 0);
|
|
|
|
// Assert
|
|
Assert.NotNull(dest);
|
|
}
|
|
}
|