AdoS0SalesRulesTests.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Admin.NET.Plugin.AiDOP.Infrastructure;
  2. using Xunit;
  3. namespace Admin.NET.Plugin.AiDOP.Tests.S0.Sales;
  4. /// <summary>
  5. /// S0 Batch2 产销:客户/物料 ForbidStatus 与订单优先规则编码规则(单元测试)。
  6. /// </summary>
  7. public class AdoS0SalesRulesTests
  8. {
  9. [Theory]
  10. [InlineData(true, "normal")]
  11. [InlineData(false, "forbidden")]
  12. public void ForbidStatusFromIsEnabled_MatchesBatch2Contract(bool isEnabled, string expected)
  13. {
  14. Assert.Equal(expected, AdoS0SalesRules.ForbidStatusFromIsEnabled(isEnabled));
  15. }
  16. [Fact]
  17. public void ResolveOrderPriorityRuleCodeForCreate_WhenCodeProvided_ReturnsAsIs()
  18. {
  19. const string code = "MY-RULE-01";
  20. var now = new DateTime(2026, 4, 8, 12, 30, 45);
  21. Assert.Equal(code, AdoS0SalesRules.ResolveOrderPriorityRuleCodeForCreate(code, now, 1234));
  22. }
  23. [Fact]
  24. public void ResolveOrderPriorityRuleCodeForCreate_WhenEmpty_GeneratesRulePrefixWithTimestampAndSuffix()
  25. {
  26. var now = new DateTime(2026, 4, 8, 12, 30, 45);
  27. var result = AdoS0SalesRules.ResolveOrderPriorityRuleCodeForCreate(null, now, 5678);
  28. Assert.Equal("RULE-20260408123045-5678", result);
  29. }
  30. [Theory]
  31. [InlineData(null)]
  32. [InlineData("")]
  33. [InlineData(" ")]
  34. public void ResolveOrderPriorityRuleCodeForUpdate_WhenBlank_KeepsExisting(string dtoCode)
  35. {
  36. Assert.Equal("OLD", AdoS0SalesRules.ResolveOrderPriorityRuleCodeForUpdate(dtoCode, "OLD"));
  37. }
  38. [Fact]
  39. public void ResolveOrderPriorityRuleCodeForUpdate_WhenProvided_Replaces()
  40. {
  41. Assert.Equal("NEW", AdoS0SalesRules.ResolveOrderPriorityRuleCodeForUpdate("NEW", "OLD"));
  42. }
  43. }