Refactor/readable dashboard #2

Merged
eho merged 5 commits from refactor/readable-dashboard into main 2026-09-04 13:19:28 +00:00
Showing only changes of commit c8029d23e2 - Show all commits
+36 -22
View File
@@ -20,7 +20,7 @@ tested where._
Every bullet below is a real test name from the suite — an `it()` title (frontend) or a test 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 method name (backend), read as a sentence. Nothing here is hand-written prose: this page
**is** the suite, reshaped for a business reader. 497 frontend behaviours across **is** the suite, reshaped for a business reader. 505 frontend behaviours across
9 contexts; 261 backend behaviours across 42 test 9 contexts; 261 backend behaviours across 42 test
classes. classes.
@@ -418,6 +418,13 @@ classes.
### registratie ### registratie
#### AanvragenStore
- loads and parses the list
- cancels optimistically and confirms via the DELETE endpoint
- rolls back the removal and surfaces the error when the cancel fails
- clears a stale error on the next cancel attempt
#### AdminCasesStore #### AdminCasesStore
- loads and parses the cross-owner list - loads and parses the cross-owner list
@@ -425,13 +432,6 @@ classes.
- rolls back the removal and surfaces the error when the delete fails - rolls back the removal and surfaces the error when the delete fails
- clears a stale error on the next delete attempt - clears a stale error on the next delete attempt
#### ApplicationsStore
- loads and parses the list
- cancels optimistically and confirms via the DELETE endpoint
- rolls back the removal and surfaces the error when the cancel fails
- clears a stale error on the next cancel attempt
#### STEPS (fixed) #### STEPS (fixed)
- always has the same three steps - always has the same three steps
@@ -544,12 +544,12 @@ classes.
- parses each tag with its required fields - parses each tag with its required fields
- rejects a missing status, unknown tag, and wrong-typed fields - rejects a missing status, unknown tag, and wrong-typed fields
#### parseApplicationSummary #### parseAanvraagSummary
- maps a valid DTO to domain - maps a valid DTO to domain
- rejects a bad type and non-objects - rejects a bad type and non-objects
#### parseApplications / parseApplicationDetail #### parseAanvragen / parseAanvraagDetail
- parses a list and fails fast on a bad element - parses a list and fails fast on a bad element
- carries the opaque draft through detail - carries the opaque draft through detail
@@ -569,6 +569,9 @@ classes.
- maps a valid response into a DashboardView - maps a valid response into a DashboardView
- rejects malformed responses instead of trusting them - rejects malformed responses instead of trusting them
- rejects a status whose tag is present but its required fields are missing
- rejects an unknown status tag
- rejects a person with an incomplete adres
#### parseDuoLookup (trust boundary) #### parseDuoLookup (trust boundary)
@@ -617,6 +620,12 @@ classes.
- statusColor is total over the union - statusColor is total over the union
- herregistratieDeadline is only set for an active registration - herregistratieDeadline is only set for an active registration
#### sortForDashboard / concepten / ingediend
- sorts Concept, then still-open, then resolved last
- does not mutate the input array
- concepten/ingediend split on the Concept tag
#### submit #### submit
- stays in Invullen when the draft is incomplete (no diploma) - stays in Invullen when the draft is incomplete (no diploma)
@@ -923,6 +932,11 @@ classes.
- leaves a non-API request untouched even when a subject is known - leaves a non-API request untouched even when a subject is known
- sends no header at all when no subject has ever been seen - sends no header at all when no subject has ever been seen
#### successOf
- unwraps a Success value
- is undefined for every other state
#### upload lifecycle messages #### upload lifecycle messages
- queued → progress → complete - queued → progress → complete
@@ -963,18 +977,7 @@ classes.
## Backend (by test class) ## Backend (by test class)
### AdminCasesTests ### AanvraagTests
- Admin lists every case with its owner
- Non admin is forbidden
- Admin can delete a submitted case
- Deleting a missing case is not found
### ApplicationRuleTests
- AanvraagStatusTag covers the published lifecycle
### ApplicationTests
- Create then list shows a concept with step progress - Create then list shows a concept with step progress
- Draft sync is readable back from detail - Draft sync is readable back from detail
@@ -993,6 +996,17 @@ classes.
- AutoApprovable flips to goedgekeurd after the window - AutoApprovable flips to goedgekeurd after the window
- Manual case never auto advances - Manual case never auto advances
### AdminCasesTests
- Admin lists every case with its owner
- Non admin is forbidden
- Admin can delete a submitted case
- Deleting a missing case is not found
### ApplicationRuleTests
- AanvraagStatusTag covers the published lifecycle
### AuthzAuditTests ### AuthzAuditTests
- A denied admin action is recorded - A denied admin action is recorded