AdoS0ProductStructureRulesTests.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Admin.NET.Plugin.AiDOP.Dto.S0.Manufacturing;
  2. using Admin.NET.Plugin.AiDOP.Infrastructure;
  3. using Xunit;
  4. namespace Admin.NET.Plugin.AiDOP.Tests.S0.Manufacturing;
  5. public class AdoS0ProductStructureRulesTests
  6. {
  7. private static AdoS0ProductStructureUpsertDto BaseDto() => new()
  8. {
  9. CompanyRefId = 1,
  10. FactoryRefId = 1,
  11. ParentMaterialId = 10,
  12. ComponentMaterialId = 20,
  13. Qty = 1m,
  14. OpNos = new List<int>()
  15. };
  16. [Fact]
  17. public void ValidateUpsert_SameParentComponent_ReturnsError()
  18. {
  19. var dto = BaseDto();
  20. dto.ComponentMaterialId = dto.ParentMaterialId;
  21. Assert.Equal("父项与子项物料不能相同", AdoS0ProductStructureRules.ValidateUpsert(dto));
  22. }
  23. [Fact]
  24. public void ValidateUpsert_Valid_ReturnsNull()
  25. {
  26. Assert.Null(AdoS0ProductStructureRules.ValidateUpsert(BaseDto()));
  27. }
  28. [Fact]
  29. public void ValidateUpsert_NegativeQty_ReturnsError()
  30. {
  31. var dto = BaseDto();
  32. dto.Qty = -1m;
  33. Assert.Equal("标准用量不能为负", AdoS0ProductStructureRules.ValidateUpsert(dto));
  34. }
  35. [Fact]
  36. public void ValidateUpsert_NegativeScrap_ReturnsError()
  37. {
  38. var dto = BaseDto();
  39. dto.Scrap = -0.01m;
  40. Assert.Equal("损耗率不能为负", AdoS0ProductStructureRules.ValidateUpsert(dto));
  41. }
  42. [Fact]
  43. public void ValidateUpsert_NegativeQtyConsumed_ReturnsError()
  44. {
  45. var dto = BaseDto();
  46. dto.QtyConsumed = -0.5m;
  47. Assert.Equal("固定损耗量不能为负", AdoS0ProductStructureRules.ValidateUpsert(dto));
  48. }
  49. }