8594baf11d
Adds DbQuerySource, an IImportSource implementation that executes SQL queries against the LotFinder database. Supports parameterized queries using anonymous objects and configurable command timeouts.
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using JdeScoping.DataAccess.Interfaces;
|
|
using JdeScoping.DataSync.Etl.Sources;
|
|
using NSubstitute;
|
|
|
|
namespace JdeScoping.DataSync.Tests.Etl.Sources;
|
|
|
|
public class DbQuerySourceTests
|
|
{
|
|
[Fact]
|
|
public void Constructor_SetsSourceName()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var source = new DbQuerySource(factory, "SELECT 1", "TestSource");
|
|
Assert.Equal("DbQuery:TestSource", source.SourceName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullName_UsesDefault()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var source = new DbQuerySource(factory, "SELECT 1");
|
|
Assert.Equal("DbQuery:Query", source.SourceName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullFactory_ThrowsArgumentNullException()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(() => new DbQuerySource(null!, "SELECT 1"));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullSql_ThrowsArgumentNullException()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
Assert.Throws<ArgumentNullException>(() => new DbQuerySource(factory, null!));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_EmptySql_ThrowsArgumentException()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
Assert.Throws<ArgumentException>(() => new DbQuerySource(factory, ""));
|
|
}
|
|
}
|