InboundRequiredFieldTests.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Admin.NET.Plugin.AiDOP.DataPlatform.Inbound;
  2. using Admin.NET.Plugin.AiDOP.Entity.DataPlatform;
  3. using Xunit;
  4. namespace Admin.NET.Plugin.AiDOP.Tests.DataPlatform;
  5. public class InboundRequiredFieldTests
  6. {
  7. private readonly MdpInboundFieldMapper _mapper = new(null!);
  8. [Fact]
  9. public void IdentityContract_RejectsMissingRequiredField()
  10. {
  11. var row = new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
  12. {
  13. ["ItemNum"] = "ITEM-001"
  14. };
  15. var missing = _mapper.MissingRequired(row, [], "MDM_ITEM", "v1");
  16. Assert.Equal(["Descr"], missing);
  17. }
  18. [Fact]
  19. public void InventoryV1_DoesNotRequireV2BusinessType()
  20. {
  21. var row = new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
  22. {
  23. ["Id"] = "TXN-001"
  24. };
  25. var missing = _mapper.MissingRequired(row, [], "S5_INVENTORY_TXN", "v1");
  26. Assert.Empty(missing);
  27. }
  28. [Fact]
  29. public void InventoryV2_RequiresBusinessType()
  30. {
  31. var row = new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
  32. {
  33. ["Id"] = "TXN-001"
  34. };
  35. var missing = _mapper.MissingRequired(row, [], "S5_INVENTORY_TXN", "v2");
  36. Assert.Equal(["BizDocType"], missing);
  37. }
  38. [Fact]
  39. public void ConfiguredMap_RemainsTheAuthoritativeContract()
  40. {
  41. var row = new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
  42. {
  43. ["external_item"] = "ITEM-001"
  44. };
  45. var maps = new List<MdpFieldMap>
  46. {
  47. new()
  48. {
  49. ContractField = "ItemNum",
  50. RawKey = "external_item",
  51. IsRequired = 1
  52. }
  53. };
  54. var missing = _mapper.MissingRequired(row, maps, "MDM_ITEM", "v1");
  55. Assert.Empty(missing);
  56. }
  57. }