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)); } } }