64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using JdeScoping.DataAccess.Interfaces;
|
|
using JdeScoping.DataSync.Etl.Scripts;
|
|
using NSubstitute;
|
|
|
|
namespace JdeScoping.DataSync.Tests.Etl.Scripts;
|
|
|
|
public class SqlScriptRunnerTests
|
|
{
|
|
[Fact]
|
|
public void Constructor_SetsScriptName()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var runner = new SqlScriptRunner(factory, "SELECT 1", "TestScript");
|
|
Assert.Equal("TestScript", runner.ScriptName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_WithNullName_DefaultsToSqlScript()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var runner = new SqlScriptRunner(factory, "SELECT 1");
|
|
Assert.Equal("SqlScript", runner.ScriptName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullFactory_ThrowsArgumentNullException()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(() => new SqlScriptRunner(null!, "SELECT 1"));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_NullSql_ThrowsArgumentNullException()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
Assert.Throws<ArgumentNullException>(() => new SqlScriptRunner(factory, null!));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_EmptySql_ThrowsArgumentException()
|
|
{
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
Assert.Throws<ArgumentException>(() => new SqlScriptRunner(factory, ""));
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_WithParameters_AcceptsParameters()
|
|
{
|
|
// Arrange
|
|
var factory = Substitute.For<IDbConnectionFactory>();
|
|
var parameters = new { tableName = "WorkOrder", schemaName = "dbo" };
|
|
|
|
// Act
|
|
var runner = new SqlScriptRunner(
|
|
factory,
|
|
"SELECT @tableName, @schemaName",
|
|
"Test",
|
|
parameters: parameters);
|
|
|
|
// Assert - constructor should accept parameters without error
|
|
Assert.NotNull(runner);
|
|
Assert.Equal("Test", runner.ScriptName);
|
|
}
|
|
}
|