feat(etl): add MapOrdinal override to ColumnDropTransformer
This commit is contained in:
@@ -63,4 +63,7 @@ public class ColumnDropTransformer : DataTransformerBase
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override bool IsDBNull(int ordinal, IDataReader source) => source.IsDBNull(_ordinalMap![ordinal]);
|
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));
|
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)
|
private static IDataReader CreateMockReader(string[] columns, object[]? values = null)
|
||||||
{
|
{
|
||||||
var reader = Substitute.For<IDataReader>();
|
var reader = Substitute.For<IDataReader>();
|
||||||
|
|||||||
Reference in New Issue
Block a user