- 黑名单新增、删除、批量导入、批量移出在配置审批节点后,审批通过才生效 - 新增黑名单待提交后可提交审批;仅首节点未审批时可撤回,进入后续节点禁止撤回 - 增加黑名单审批列表、审批弹窗、审批操作日志及状态筛选 - 支持审批配置中的“黑名单审批”流程及对应菜单、模块权限、操作权限 - 黑名单审批中禁止同名记录覆盖备注;已在黑名单中的同名导入会明确提示本次将修改备注 - 未配置审批节点时保持原有直接生效行为 - 增加黑名单审批状态机单测,39/39 通过 - 修正撤回全部失败时仍提示“撤回审批成功”的问题
122 lines
5.5 KiB
C#
122 lines
5.5 KiB
C#
using YLErp.Model;
|
|
|
|
namespace YLErp.Modules.ClientModule.Tests
|
|
{
|
|
[TestClass]
|
|
public class ClientBlackApprovalPolicyTests
|
|
{
|
|
[DataTestMethod]
|
|
[DataRow(client_black.未提交, false)]
|
|
[DataRow(client_black.新增审批中, false)]
|
|
[DataRow(client_black.新增已拒绝, false)]
|
|
[DataRow(client_black.已加入, true)]
|
|
[DataRow(client_black.删除审批中, true)]
|
|
[DataRow(client_black.删除已拒绝, true)]
|
|
public void IsEffective_OnlyAppliedOrPendingRemovalStatesAreEffective(string state, bool expected)
|
|
{
|
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.IsEffective(state));
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.未提交, true)]
|
|
[DataRow(client_black.新增已拒绝, true)]
|
|
[DataRow(client_black.新增审批中, false)]
|
|
[DataRow(client_black.已加入, false)]
|
|
[DataRow(client_black.删除审批中, false)]
|
|
[DataRow(client_black.删除已拒绝, false)]
|
|
public void CanSubmitAddition_OnlyDraftOrRejectedAdditionCanSubmit(string state, bool expected)
|
|
{
|
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanSubmitAddition(state));
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.已加入, true)]
|
|
[DataRow(client_black.删除已拒绝, true)]
|
|
[DataRow(client_black.未提交, false)]
|
|
[DataRow(client_black.新增审批中, false)]
|
|
[DataRow(client_black.新增已拒绝, false)]
|
|
[DataRow(client_black.删除审批中, false)]
|
|
public void CanRequestRemoval_OnlyEffectiveNonPendingRemovalStatesCanRequest(string state, bool expected)
|
|
{
|
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanRequestRemoval(state));
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.新增审批中, 1, true)]
|
|
[DataRow(client_black.删除审批中, 1, true)]
|
|
[DataRow(client_black.新增审批中, 2, false)]
|
|
[DataRow(client_black.删除审批中, 2, false)]
|
|
[DataRow(client_black.未提交, 0, false)]
|
|
public void CanWithdraw_OnlyFirstApprovalNodeCanWithdraw(string state, int approvalProcess, bool expected)
|
|
{
|
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanWithdraw(state, approvalProcess));
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.新增审批中, client_black.新增已拒绝)]
|
|
[DataRow(client_black.删除审批中, client_black.删除已拒绝)]
|
|
public void RejectedState_DistinguishesAdditionAndRemoval(string state, string expected)
|
|
{
|
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.GetRejectedState(state));
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.新增审批中, client_black.未提交, 0)]
|
|
[DataRow(client_black.删除审批中, client_black.已加入, -2)]
|
|
public void WithdrawState_RestoresStateBeforeSubmission(string state, string expectedState, int expectedProcess)
|
|
{
|
|
var result = ClientBlackApprovalPolicy.GetWithdrawResult(state);
|
|
|
|
Assert.AreEqual(expectedState, result.State);
|
|
Assert.AreEqual(expectedProcess, result.ApprovalProcess);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.新增审批中, client_black.已加入, false)]
|
|
[DataRow(client_black.删除审批中, null, true)]
|
|
public void GetFinalResult_AdditionAppliesAndRemovalDeletes(string state, string expectedState, bool expectedDelete)
|
|
{
|
|
var result = ClientBlackApprovalPolicy.GetFinalResult(state);
|
|
|
|
Assert.AreEqual(expectedState, result.State);
|
|
Assert.AreEqual(expectedDelete, result.ShouldDelete);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(false, client_black.已加入, -2, true)]
|
|
[DataRow(true, client_black.未提交, 0, false)]
|
|
public void GetAdditionResult_OnlyEffectiveWithoutApprovalProcess(bool hasApprovalProcess, string expectedState, int expectedProcess, bool expectedEffective)
|
|
{
|
|
var result = ClientBlackApprovalPolicy.GetAdditionResult(hasApprovalProcess);
|
|
|
|
Assert.AreEqual(expectedState, result.State);
|
|
Assert.AreEqual(expectedProcess, result.ApprovalProcess);
|
|
Assert.AreEqual(expectedEffective, result.IsEffective);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(false, client_black.已加入, -2, true)]
|
|
[DataRow(true, client_black.删除审批中, 1, false)]
|
|
public void GetRemovalResult_OnlyDeletesImmediatelyWithoutApprovalProcess(bool hasApprovalProcess, string expectedState, int expectedProcess, bool expectedDelete)
|
|
{
|
|
var result = ClientBlackApprovalPolicy.GetRemovalResult(hasApprovalProcess);
|
|
|
|
Assert.AreEqual(expectedState, result.State);
|
|
Assert.AreEqual(expectedProcess, result.ApprovalProcess);
|
|
Assert.AreEqual(expectedDelete, result.ShouldDelete);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(client_black.未提交, true)]
|
|
[DataRow(client_black.新增已拒绝, true)]
|
|
[DataRow(client_black.新增审批中, false)]
|
|
[DataRow(client_black.删除审批中, false)]
|
|
[DataRow(client_black.已加入, true)]
|
|
[DataRow(client_black.删除已拒绝, true)]
|
|
public void CanReplaceRemarks_ApprovalPendingRowsCannotBeOverwritten(string state, bool expected)
|
|
{
|
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanReplaceRemarks(state));
|
|
}
|
|
}
|
|
}
|