修改相关bug
This commit is contained in:
@@ -47,6 +47,27 @@ foreach (var terminal in new[] { ElectronicSignStatus.Completed, ElectronicSignS
|
||||
foreach (var backward in new[] { ElectronicSignStatus.PendingEmployeeSign, ElectronicSignStatus.Draft, ElectronicSignStatus.Creating, ElectronicSignStatus.Failed })
|
||||
Reject(() => OnboardingSignStateGuard.Resolve(ElectronicSignStatus.PendingCompanySeal, backward), "signed progress cannot regress: " + backward);
|
||||
|
||||
|
||||
// Uses the real signing-material validity rule. End time is exclusive.
|
||||
var validityNow = new DateTime(2026, 9, 17, 12, 0, 0);
|
||||
var availableVersion = new ObContractTemplateVersion { VersionStatus = ContractTemplateVersionStatus.Enabled };
|
||||
Check(ContractTemplateVersionValidity.IsAvailable(availableVersion, validityNow), "enabled version without time bounds is available");
|
||||
availableVersion.EffectiveDate = validityNow;
|
||||
availableVersion.ExpiryDate = validityNow.AddSeconds(1);
|
||||
Check(ContractTemplateVersionValidity.IsAvailable(availableVersion, validityNow), "effective boundary is inclusive");
|
||||
availableVersion.ExpiryDate = validityNow;
|
||||
Check(!ContractTemplateVersionValidity.IsAvailable(availableVersion, validityNow), "expiry boundary is exclusive");
|
||||
availableVersion.EffectiveDate = validityNow.AddSeconds(1);
|
||||
availableVersion.ExpiryDate = validityNow.AddMinutes(1);
|
||||
Check(!ContractTemplateVersionValidity.IsAvailable(availableVersion, validityNow), "future version is unavailable");
|
||||
availableVersion.EffectiveDate = validityNow.AddMinutes(-1);
|
||||
availableVersion.ExpiryDate = validityNow.AddMinutes(1);
|
||||
availableVersion.VersionStatus = ContractTemplateVersionStatus.Disabled;
|
||||
Check(!ContractTemplateVersionValidity.IsAvailable(availableVersion, validityNow), "disabled version is unavailable");
|
||||
ContractTemplateVersionValidity.ValidateRange(validityNow, validityNow.AddSeconds(1));
|
||||
Reject(() => ContractTemplateVersionValidity.ValidateRange(validityNow, validityNow), "equal start/end rejected");
|
||||
Reject(() => ContractTemplateVersionValidity.ValidateRange(validityNow, validityNow.AddSeconds(-1)), "end before start rejected");
|
||||
|
||||
// Exercises the real async gate with a fake external lease. Does NOT claim MySQL GET_LOCK integration.
|
||||
var leases = new FakeLeases();
|
||||
Task<int> Gate(string key, Func<Task<int>> action) => OnboardingOperationGate.Run(key, () => leases.Acquire(key), action);
|
||||
|
||||
Reference in New Issue
Block a user