| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using Admin.NET.Plugin.AiDOP.Entity;
- using Admin.NET.Plugin.AiDOP.Infrastructure;
- using Admin.NET.Plugin.ApprovalFlow;
- using Xunit;
- namespace Admin.NET.Plugin.AiDOP.Tests.SmartOps;
- public class SmartOpsImprovementApprovalTests
- {
- [Theory]
- [InlineData("S1", "yellow", false, null, "yellow")]
- [InlineData("S1", "red", false, null, "red")]
- [InlineData("S1", "green", false, null, "yellow")]
- [InlineData("S9", "yellow", false, null, "global")]
- [InlineData("S2", "yellow", true, null, "global")]
- [InlineData("S3", "red", false, "计划部/采购部跨部门", "global")]
- public void Route_FollowsSeverityAndCrossDept(string module, string severity, bool cross, string? dept, string expected)
- {
- Assert.Equal(expected, SmartOpsImprovementApprovalRules.ResolveRoute(module, severity, cross, dept));
- }
- [Theory]
- [InlineData("yellow", new[] { "SMART_OPS_DEPT_HEAD" })]
- [InlineData("red", new[] { "SMART_OPS_DEPT_HEAD", "SMART_OPS_OPS_OWNER" })]
- [InlineData("global", new[] { "SMART_OPS_DEPT_HEAD", "SMART_OPS_MODULE_OWNER", "SMART_OPS_OPS_OWNER" })]
- public void RequiredRoles_MatchFormalBaseline(string route, string[] expected)
- {
- Assert.Equal(expected, SmartOpsImprovementApprovalRules.RequiredRoleCodes(route));
- }
- [Fact]
- public void CompletedStatus_ApprovedThenExecute_RejectReturnsDraft()
- {
- Assert.Equal("approved", SmartOpsImprovementApprovalRules.MapCompletedStatus(FlowInstanceStatusEnum.Approved));
- Assert.Equal("draft", SmartOpsImprovementApprovalRules.MapCompletedStatus(FlowInstanceStatusEnum.Rejected));
- Assert.Equal("draft", SmartOpsImprovementApprovalRules.MapCompletedStatus(FlowInstanceStatusEnum.Cancelled));
- }
- [Fact]
- public void FormalFlow_UsesRoleCodes_NotUserIdsOrInitiator()
- {
- var json = AidopImprovementApprovalSeed.BuildFormalFlowJson();
- Assert.Contains("bpmn:exclusiveGateway", json);
- Assert.Contains("SMART_OPS_DEPT_HEAD", json);
- Assert.Contains("SMART_OPS_MODULE_OWNER", json);
- Assert.Contains("SMART_OPS_OPS_OWNER", json);
- Assert.Contains("route == yellow", json);
- Assert.Contains("route == red", json);
- Assert.DoesNotContain("Initiator", json);
- Assert.False(SmartOpsImprovementApprovalRules.IsLegacyInitiatorFallback(json));
- Assert.True(SmartOpsImprovementApprovalRules.IsLegacyInitiatorFallback(
- """{"nodes":[{"properties":{"approverType":"Initiator"}}]}"""));
- }
- [Fact]
- public void PlanRoute_UsesPersistedSeverity()
- {
- var plan = new AdoSmartOpsImprovementPlan
- {
- ModuleCode = "S1",
- ProblemSeverity = "red",
- IsCrossDept = false,
- ProblemDept = "计划部",
- };
- Assert.Equal("red", SmartOpsImprovementApprovalRules.ResolveRoute(plan));
- }
- }
|