From c1e48c90e076997934df20f85a1b2566975edd38 Mon Sep 17 00:00:00 2001 From: Niek Otten Date: Tue, 21 Jul 2026 14:39:48 +0200 Subject: [PATCH] test(acceptance): document-timeout scenario asserts the zaak is cancelled (refs #106) Extends the S-10a feature to S-10c: a timed-out registration's zaak is cancelled via the ACL, while documents-in-time leave the zaak untouched. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Features/EenDocumentTermijnVerlopen.feature | 2 ++ .../Steps/EenDocumentTermijnVerlopenSteps.cs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/acceptance/Features/EenDocumentTermijnVerlopen.feature b/tests/acceptance/Features/EenDocumentTermijnVerlopen.feature index 7ec02bf..9158d90 100644 --- a/tests/acceptance/Features/EenDocumentTermijnVerlopen.feature +++ b/tests/acceptance/Features/EenDocumentTermijnVerlopen.feature @@ -14,6 +14,7 @@ Feature: Een documenttermijn laten verlopen When the 30-day document timer fires And the document-timeout worker runs Then the registration is verlopen + And the zaak is cancelled in ZGW Scenario: Tijdig aangeleverde documenten laten de registratie niet vervallen Given a registration parked at the WachtOpDocumenten task @@ -21,3 +22,4 @@ Feature: Een documenttermijn laten verlopen And the 30-day document timer fires And the document-timeout worker runs Then the registration is not verlopen + And the zaak is not cancelled in ZGW diff --git a/tests/acceptance/Steps/EenDocumentTermijnVerlopenSteps.cs b/tests/acceptance/Steps/EenDocumentTermijnVerlopenSteps.cs index 402cfde..59ebdee 100644 --- a/tests/acceptance/Steps/EenDocumentTermijnVerlopenSteps.cs +++ b/tests/acceptance/Steps/EenDocumentTermijnVerlopenSteps.cs @@ -17,8 +17,11 @@ namespace Acceptance.Steps; [Scope(Feature = "Een documenttermijn laten verlopen")] public sealed class EenDocumentTermijnVerlopenSteps { + private static readonly Uri ZaakUrl = new("http://openzaak/zaken/api/v1/zaken/acc-timeout"); + private readonly InMemoryDocumentTimeoutClient _flowable = new(); private readonly Support.InMemoryRegistrationStore _store = new(); + private readonly InMemoryAclClient _acl = new(); private Registration _registration = null!; private string _processInstanceId = ""; @@ -26,6 +29,9 @@ public sealed class EenDocumentTermijnVerlopenSteps public async Task GivenARegistrationParkedAtWachtOpDocumenten() { _registration = Registration.Submit("123456782"); + // By the time it parks at WachtOpDocumenten its zaak has been opened (OpenZaakAanmaken runs + // earlier), so a timeout has a zaak to cancel. + _registration.AttachZaak(ZaakUrl); await _store.SaveAsync(_registration); _processInstanceId = _flowable.ParkWaitingForDocuments(_registration.Id); } @@ -39,7 +45,7 @@ public sealed class EenDocumentTermijnVerlopenSteps [When("the document-timeout worker runs")] public async Task WhenTheTimeoutWorkerRuns() => await new RegistratieVerlopenProcessor( - _flowable, new ExpireRegistrationWorker(_store), + _flowable, new ExpireRegistrationWorker(_store, _acl), NullLogger.Instance).PumpOnceAsync(5); [Then("the registration is verlopen")] @@ -49,4 +55,10 @@ public sealed class EenDocumentTermijnVerlopenSteps [Then("the registration is not verlopen")] public async Task ThenTheRegistrationIsNotVerlopen() => Assert.Equal(RegistrationStatus.Ingediend, (await _store.GetAsync(_registration.Id))!.Status); + + [Then("the zaak is cancelled in ZGW")] + public void ThenTheZaakIsCancelled() => Assert.Equal(ZaakUrl, _acl.CancelledZaakUrl); + + [Then("the zaak is not cancelled in ZGW")] + public void ThenTheZaakIsNotCancelled() => Assert.Null(_acl.CancelledZaakUrl); }