Files
KArtSell.Aegis/docs/Design/kbx-foundation-v60-status-canonical-contract-hardening/backend/Shared/Excel/Tests/ImportMappingEngineTests.cs
T
kjh2064 3f293d8aa8
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s
V13-FE-006: consolidate approved UI and contract hardening
2026-08-13 02:41:00 +09:00

40 lines
1.3 KiB
C#

using Xunit;
namespace Shared.Excel.Tests;
public sealed class ImportMappingEngineTests
{
private static readonly ImportDefinition Definition = new(
"test.orders", "TEST-ORD-001", "order", "주문 Import",
[
new("itemCode", "품목코드", ["상품코드", "SKU"], "lookup", true),
new("quantity", "수량", ["주문수량", "Qty"], "quantity", true),
], true, false);
[Fact]
public void Exact_label_has_priority()
{
var mapping = new ImportMappingEngine().Map(["품목코드", "수량"], Definition);
Assert.Equal("itemCode", mapping[0].TargetField);
Assert.Equal("exact", mapping[0].Source);
}
[Fact]
public void Alias_is_resolved_without_ai()
{
var mapping = new ImportMappingEngine().Map(["SKU", "주문수량"], Definition);
Assert.Equal("itemCode", mapping[0].TargetField);
Assert.Equal("alias", mapping[0].Source);
Assert.Equal("quantity", mapping[1].TargetField);
}
[Fact]
public void Saved_mapping_wins_before_new_inference()
{
var saved = new[] { new ImportMapping("MySku", "itemCode", "manual") };
var mapping = new ImportMappingEngine().Map(["MySku"], Definition, saved);
Assert.Equal("itemCode", mapping[0].TargetField);
Assert.Equal("saved", mapping[0].Source);
}
}