feat(etl): add MapOrdinal override to ColumnDropTransformer

This commit is contained in:
Joseph Doherty
2026-01-03 10:35:54 -05:00
parent 506ba5c61d
commit 577e67ec64
2 changed files with 18 additions and 0 deletions
@@ -63,4 +63,7 @@ public class ColumnDropTransformer : DataTransformerBase
/// <inheritdoc />
public override bool IsDBNull(int ordinal, IDataReader source) => source.IsDBNull(_ordinalMap![ordinal]);
/// <inheritdoc />
public override int MapOrdinal(int transformedOrdinal, IDataReader source) => _ordinalMap![transformedOrdinal];
}
@@ -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<IDataReader>();