test(domain): expiry worker cancels the zaak via the ACL on timeout (refs #106)
S-10c: expiring the aggregate to VERLOPEN is not enough — the ZGW zaak must also be cancelled through the ACL (§8.1). Adds IAclClient.CancelZaakAsync and its client/fakes, and asserts the worker cancels a still-open registration's zaak but leaves an already-resolved one untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,7 @@ namespace Big.Application;
|
||||
/// nothing of Flowable. The polling loop that feeds it jobs lives in Infrastructure. Mirrors
|
||||
/// <see cref="OpenZaakWorker"/>.
|
||||
/// </summary>
|
||||
public sealed class ExpireRegistrationWorker(IRegistrationStore store)
|
||||
public sealed class ExpireRegistrationWorker(IRegistrationStore store, IAclClient acl)
|
||||
{
|
||||
/// <summary>
|
||||
/// Process the job. Idempotent and tolerant of races (§8.6, at-least-once delivery): a job whose
|
||||
|
||||
@@ -59,6 +59,12 @@ public interface IAclClient
|
||||
/// zaak (§8.1). Returns the stored document's URL.
|
||||
/// </summary>
|
||||
Task<Uri> StoreDiplomaAsync(Uri zaakUrl, byte[] content, string fileName, string contentType, CancellationToken ct = default);
|
||||
|
||||
/// <summary>
|
||||
/// Cancel the zaak on document-timeout expiry (S-10c): the 30-day document term lapsed, so the ACL
|
||||
/// translates this to the ZGW cancellation status/resultaat. The domain never names statustypen.
|
||||
/// </summary>
|
||||
Task CancelZaakAsync(Uri zaakUrl, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user