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(); var source = new DbQuerySource(factory, "SELECT 1", "TestSource"); Assert.Equal("DbQuery:TestSource", source.SourceName); } [Fact] public void Constructor_NullName_UsesDefault() { var factory = Substitute.For(); var source = new DbQuerySource(factory, "SELECT 1"); Assert.Equal("DbQuery:Query", source.SourceName); } [Fact] public void Constructor_NullFactory_ThrowsArgumentNullException() { Assert.Throws(() => new DbQuerySource(null!, "SELECT 1")); } [Fact] public void Constructor_NullSql_ThrowsArgumentNullException() { var factory = Substitute.For(); Assert.Throws(() => new DbQuerySource(factory, null!)); } [Fact] public void Constructor_EmptySql_ThrowsArgumentException() { var factory = Substitute.For(); Assert.Throws(() => new DbQuerySource(factory, "")); } }