Files
jdescopingtool/NEW/tests/JdeScoping.DataSync.Tests/Etl/Scripts/SqlScriptRunnerTests.cs
T
2026-01-03 10:52:33 -05:00

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);
}
}