Files
zszq-trs/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs
tengyufan 87a8b90eaf fix(ClientBlack): 支持删除未生效黑名单记录
- 未提交、新增已拒绝的黑名单记录可直接删除,不进入删除审批
- 已加入、删除已拒绝仍按原逻辑发起删除审批
- 新增审批中、删除审批中仍禁止删除
- 补充未生效状态可直接删除的状态机单测,45/45 通过
2026-08-19 10:07:39 +08:00

134 lines
6.0 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.未提交, true)]
[DataRow(client_black.新增已拒绝, true)]
[DataRow(client_black.新增审批中, false)]
[DataRow(client_black.已加入, false)]
[DataRow(client_black.删除审批中, false)]
[DataRow(client_black.删除已拒绝, false)]
public void CanDeleteDraft_OnlyNeverEffectiveStatesCanDeleteDirectly(string state, bool expected)
{
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanDeleteDraft(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));
}
}
}