f5468d019f
Add MapOrdinal method to the IDataTransformer interface and provide a default implementation in DataTransformerBase. This enables transformers to report the mapping between transformed ordinals and source ordinals, supporting use cases like computed columns which return -1 to indicate no source ordinal. - Add MapOrdinal(int, IDataReader) to IDataTransformer interface - Add virtual MapOrdinal implementation in DataTransformerBase - Add DataTransformerBaseTests with test for default behavior
41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
using System.Data;
|
|
using JdeScoping.DataSync.Etl.Transformers;
|
|
using NSubstitute;
|
|
|
|
namespace JdeScoping.DataSync.Tests.Etl.Transformers;
|
|
|
|
public class DataTransformerBaseTests
|
|
{
|
|
[Fact]
|
|
public void MapOrdinal_DefaultImplementation_ReturnsOrdinalUnchanged()
|
|
{
|
|
// Arrange
|
|
var transformer = new PassThroughTransformer();
|
|
var reader = CreateMockReader(new[] { "A", "B", "C" });
|
|
|
|
// Act
|
|
var result = transformer.MapOrdinal(1, reader);
|
|
|
|
// Assert
|
|
Assert.Equal(1, result);
|
|
}
|
|
|
|
private static IDataReader CreateMockReader(string[] columns)
|
|
{
|
|
var reader = Substitute.For<IDataReader>();
|
|
reader.FieldCount.Returns(columns.Length);
|
|
for (int i = 0; i < columns.Length; i++)
|
|
{
|
|
var index = i;
|
|
reader.GetName(index).Returns(columns[index]);
|
|
reader.GetOrdinal(columns[index]).Returns(index);
|
|
}
|
|
return reader;
|
|
}
|
|
|
|
private class PassThroughTransformer : DataTransformerBase
|
|
{
|
|
public override string TransformerName => "PassThrough";
|
|
}
|
|
}
|