using Acl.Application; namespace Acceptance.Support; /// An in-memory stand-in for the OpenZaak Zaken API. It captures the /// fully default-filled the ACL builds and returns a /// fixed zaak URL, so the acceptance scenario can verify the use case without a /// running OpenZaak (real-OpenZaak verification is a separate slice). public sealed class InMemoryZaakGateway : IZaakGateway { public static readonly Uri CreatedZaakUrl = new("http://openzaak/zaken/api/v1/zaken/created-123"); public ZaakRequest? Captured { get; private set; } public (Uri Zaak, Uri Zaaktype, DateOnly Datum)? Approved { get; private set; } public (Uri Zaak, Uri Zaaktype, DateOnly Datum)? Cancelled { get; private set; } // The URLs the catalogus resolves the configured identificatie/omschrijving to (S-27); settable so // a scenario can pin the zaaktype the ACL should default-fill. public Uri ResolvedZaaktypeUrl { get; set; } = new("http://openzaak/catalogi/api/v1/zaaktypen/big"); public Uri ResolvedInformatieobjecttypeUrl { get; set; } = new("http://openzaak/catalogi/api/v1/informatieobjecttypen/dip"); public Task OpenZaakAsync(ZaakRequest request, CancellationToken ct = default) { Captured = request; return Task.FromResult(CreatedZaakUrl); } public Task SetZaakToEindstatusAsync(Uri zaakUrl, Uri zaaktypeUrl, DateOnly datumStatusGezet, CancellationToken ct = default) { Approved = (zaakUrl, zaaktypeUrl, datumStatusGezet); return Task.CompletedTask; } public Task SetZaakToCancellationStatusAsync(Uri zaakUrl, Uri zaaktypeUrl, DateOnly datumStatusGezet, CancellationToken ct = default) { Cancelled = (zaakUrl, zaaktypeUrl, datumStatusGezet); return Task.CompletedTask; } public Task GetZaakIdentificatieAsync(Uri zaakUrl, CancellationToken ct = default) => Task.FromResult("ACC-REF-1"); public Task StoreDocumentAsync(DocumentRequest request, CancellationToken ct = default) => Task.FromResult(new Uri("http://openzaak/documenten/api/v1/enkelvoudiginformatieobjecten/acc-doc")); public Task ResolveZaaktypeUrlAsync(string identificatie, CancellationToken ct = default) => Task.FromResult(ResolvedZaaktypeUrl); public Task ResolveInformatieobjecttypeUrlAsync(string omschrijving, CancellationToken ct = default) => Task.FromResult(ResolvedInformatieobjecttypeUrl); public Task> ListZaaktypenAsync(CancellationToken ct = default) => Task.FromResult>( [new ZaaktypeSummary("BIG-REGISTRATIE", "BIG-registratie", ResolvedZaaktypeUrl)]); }