diff --git a/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs b/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs index 7d49b72..a97a271 100644 --- a/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs +++ b/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs @@ -63,4 +63,7 @@ public class ColumnDropTransformer : DataTransformerBase /// public override bool IsDBNull(int ordinal, IDataReader source) => source.IsDBNull(_ordinalMap![ordinal]); + + /// + public override int MapOrdinal(int transformedOrdinal, IDataReader source) => _ordinalMap![transformedOrdinal]; } diff --git a/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs b/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs index b7301d2..0f4ec50 100644 --- a/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs +++ b/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs @@ -71,6 +71,21 @@ public class ColumnDropTransformerTests Assert.Equal("Value", reader.GetName(2)); } + [Fact] + public void MapOrdinal_DroppedColumn_MapsCorrectly() + { + // Arrange - drop column B (ordinal 1), so C becomes ordinal 1 + var source = CreateMockReader(new[] { "A", "B", "C" }); + var transformer = new ColumnDropTransformer("B"); + transformer.Transform(source); + + // Act - transformed ordinal 1 should map to source ordinal 2 (C) + var result = transformer.MapOrdinal(1, source); + + // Assert + Assert.Equal(2, result); + } + private static IDataReader CreateMockReader(string[] columns, object[]? values = null) { var reader = Substitute.For();