S8ActiveFlowWatchServiceTests.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using Admin.NET.Plugin.AiDOP.Service.S8;
  2. using Xunit;
  3. namespace Admin.NET.Test.S8;
  4. /// <summary>
  5. /// N-2 孤立审批实例告警的纯逻辑回归。
  6. /// 仅覆盖 payload→flowInstanceId 解析路径;SqlSugar 查询路径走 run-once 端到端验证。
  7. /// </summary>
  8. public class S8ActiveFlowWatchServiceTests
  9. {
  10. [Fact]
  11. public void TryExtractFlowInstanceId_Returns_Id_For_Valid_Payload()
  12. {
  13. var payload = """{"type":"S8_ORPHAN_FLOW_INSTANCE","flowInstanceId":796332066504773,"bizType":"EXCEPTION_ESCALATION"}""";
  14. var id = S8ActiveFlowWatchService.TryExtractFlowInstanceId(payload);
  15. Assert.Equal(796332066504773L, id);
  16. }
  17. [Fact]
  18. public void TryExtractFlowInstanceId_Returns_Null_When_Field_Missing()
  19. {
  20. var payload = """{"type":"S8_ACTIVE_FLOW_STUCK","exceptionId":42}""";
  21. Assert.Null(S8ActiveFlowWatchService.TryExtractFlowInstanceId(payload));
  22. }
  23. [Fact]
  24. public void TryExtractFlowInstanceId_Returns_Null_When_Field_Wrong_Type()
  25. {
  26. var payload = """{"flowInstanceId":"not-a-number"}""";
  27. Assert.Null(S8ActiveFlowWatchService.TryExtractFlowInstanceId(payload));
  28. }
  29. [Fact]
  30. public void TryExtractFlowInstanceId_Returns_Null_For_Invalid_Json()
  31. {
  32. Assert.Null(S8ActiveFlowWatchService.TryExtractFlowInstanceId("{not json"));
  33. }
  34. [Fact]
  35. public void TryExtractFlowInstanceId_Returns_Null_For_Null_Or_Empty()
  36. {
  37. Assert.Null(S8ActiveFlowWatchService.TryExtractFlowInstanceId(null));
  38. Assert.Null(S8ActiveFlowWatchService.TryExtractFlowInstanceId(""));
  39. Assert.Null(S8ActiveFlowWatchService.TryExtractFlowInstanceId(" "));
  40. }
  41. }