feat: add Primary message to the 3 wizard machines (RD-07)
Each wizard component re-derives the step-boundary decision the reducer already owns: advance on a middle step, submit on the last step. This ticket moves that decision into the machine, so RD-08 can replace the component's guard with one dispatch. Add a `Primary` message to each Msg union, and export a `primary(s)` function next to the existing `next`/`submit` pair. `primary` is a three-line branch that delegates to `next`/`submit` and writes no new validation. Each machine tests "last step" in its own vocabulary, per the ticket's Decisions block: `herregistratie` checks `step === 3`, `intake` checks `currentStep(s) === 'review'`, `registratie` checks `currentStep(s) === 'controle'`. `Next` and `Submit` stay in every union and every reducer — `Primary` is purely additive. Add 3 spec cases per machine (9 total): Primary advances from a non-final step, Primary submits from the final step, and Primary is a no-op outside the editing state. Each case also asserts the equivalence the ticket requires for RD-08's migration: `reduce(s, Primary)` equals `reduce(s, Next)` at a non-final step, and equals `reduce(s, Submit)` at the final step. Regenerate `behaviour-spec.mdx` for the 9 new `it()` titles. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@ tested where._
|
||||
|
||||
Every bullet below is a real test name from the suite — an `it()` title (frontend) or a test
|
||||
method name (backend), read as a sentence. Nothing here is hand-written prose: this page
|
||||
**is** the suite, reshaped for a business reader. 510 frontend behaviours across
|
||||
**is** the suite, reshaped for a business reader. 519 frontend behaviours across
|
||||
9 contexts; 261 backend behaviours across 42 test
|
||||
classes.
|
||||
|
||||
@@ -383,6 +383,15 @@ classes.
|
||||
- gaNaarStap jumps back to an earlier step, clearing errors
|
||||
- gaNaarStap ignores a same/forward jump and jumps outside Answering
|
||||
|
||||
#### primary
|
||||
|
||||
- Primary advances to the next step from a non-final step
|
||||
- Primary submits from the final step
|
||||
- Primary is a no-op from a non-editing state
|
||||
- Primary advances to the next step from a non-final step
|
||||
- Primary submits from the final step
|
||||
- Primary is a no-op from a non-editing state
|
||||
|
||||
#### reduce (message-driven happy path)
|
||||
|
||||
- drives abroad branch end to end
|
||||
@@ -605,6 +614,12 @@ classes.
|
||||
- a diploma with questions blocks Next until they are answered
|
||||
- validateAll keeps only the answers to the questions that applied
|
||||
|
||||
#### primary
|
||||
|
||||
- Primary advances to the next step from a non-final step
|
||||
- Primary submits from the final step
|
||||
- Primary is a no-op from a non-editing state
|
||||
|
||||
#### reduce (message-driven happy path)
|
||||
|
||||
- adres and correspondentie set, Next advances from adres to beroep
|
||||
|
||||
Reference in New Issue
Block a user