test(workflow): diploma routing — acceptance + live foreign→CBGV path (S-13, refs #14)
Gherkin scenarios assert the submit carries the diploma origin (domestic/foreign) into the process. verify-domain now submits a foreign registration and asserts it parks at CBGVAdvies before Beoordelen, completes CBGV, then advances to Beoordelen — exercising both DMN branches through the engine (the domestic DIRECT path is the first registration already parking straight at Beoordelen). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
19
tests/acceptance/Features/EenDiplomaRouteren.feature
Normal file
19
tests/acceptance/Features/EenDiplomaRouteren.feature
Normal file
@@ -0,0 +1,19 @@
|
||||
# language: en
|
||||
# Drives S-13 (#14). A registration's diploma origin decides its route: a domestic (Binnenlands)
|
||||
# diploma goes straight to beoordeling, a foreign (Buitenlands) one is routed through an extra
|
||||
# CBGV-advies step (PRD flow 4). The decision itself is a DMN evaluated inside the workflow
|
||||
# (ADR-0016); the domain's part — verified here — is carrying the origin into the process so the DMN
|
||||
# can route on it. The DMN evaluation and the CBGV routing are verified live (verify-domain).
|
||||
Feature: Een diploma op herkomst routeren
|
||||
Als register wil ik een aanvraag met een buitenlands diploma extra laten toetsen
|
||||
zodat een CBGV-advies wordt ingewonnen voordat een behandelaar beoordeelt.
|
||||
|
||||
Scenario: Een binnenlands diploma start de registratie als binnenlands
|
||||
Given a zorgprofessional with a "Binnenlands" diploma
|
||||
When they submit their registration
|
||||
Then the registratie process is started carrying a "Binnenlands" diploma
|
||||
|
||||
Scenario: Een buitenlands diploma start de registratie als buitenlands
|
||||
Given a zorgprofessional with a "Buitenlands" diploma
|
||||
When they submit their registration
|
||||
Then the registratie process is started carrying a "Buitenlands" diploma
|
||||
36
tests/acceptance/Steps/EenDiplomaRouterenSteps.cs
Normal file
36
tests/acceptance/Steps/EenDiplomaRouterenSteps.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using Acceptance.Support;
|
||||
using Big.Application;
|
||||
using Big.Domain;
|
||||
using Reqnroll;
|
||||
using Xunit;
|
||||
|
||||
namespace Acceptance.Steps;
|
||||
|
||||
/// <summary>Bindings for <c>EenDiplomaRouteren.feature</c> (S-13). Drives the submit use case against
|
||||
/// in-memory ports and asserts the registratie process is started carrying the diploma origin — the
|
||||
/// domain's contribution to flow 4. The DMN evaluation and the foreign→CBGV-advies routing it drives
|
||||
/// are verified live (verify-domain); one instance per scenario.</summary>
|
||||
[Binding]
|
||||
[Scope(Feature = "Een diploma op herkomst routeren")]
|
||||
public sealed class EenDiplomaRouterenSteps
|
||||
{
|
||||
private readonly InMemoryRegistrationStore _store = new();
|
||||
private readonly InMemoryWorkflowClient _workflow = new();
|
||||
private DiplomaOrigin _origin;
|
||||
|
||||
[Given("a zorgprofessional with a \"(.*)\" diploma")]
|
||||
public void GivenAZorgprofessionalWithADiploma(string origin)
|
||||
=> _origin = Enum.Parse<DiplomaOrigin>(origin, ignoreCase: true);
|
||||
|
||||
[When("they submit their registration")]
|
||||
public async Task WhenTheySubmitTheirRegistration()
|
||||
=> await new SubmitRegistration(_store, _workflow).HandleAsync(
|
||||
new SubmitRegistrationCommand("123456782", _origin));
|
||||
|
||||
[Then("the registratie process is started carrying a \"(.*)\" diploma")]
|
||||
public void ThenTheProcessIsStartedCarryingTheDiploma(string expected)
|
||||
{
|
||||
Assert.NotNull(_workflow.StartedFor);
|
||||
Assert.Equal(Enum.Parse<DiplomaOrigin>(expected, ignoreCase: true), _workflow.StartedWithOrigin);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user