- Aanvragen rows now show what the aanvraag is for (purpose subtitle) and an explicit status label (In behandeling / Goedgekeurd / Afgewezen) alongside the reference + submit date, via an expanded aanvraag-view (purposeLabel, statusLabel, referentie, detailRows) + spec. - Rows link to a new /aanvraag/:id case-detail page, so the CIBG chevron shows and each aanvraag opens as a (stub) case — it lists soort/waarvoor/status/ referentie/ingediend in a Datablock, with a note that full handling is future. GREEN: lint, tokens, 183 tests, build, 137 axe stories. Verified visually (dashboard aanvragen rows, upload drop-zone, datablock) via Storybook screenshots. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46 lines
2.3 KiB
TypeScript
46 lines
2.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { submittedRow, detailRows, purposeLabel, statusLabel, TYPE_LABELS } from './aanvraag-view';
|
|
import { Aanvraag } from './aanvraag';
|
|
|
|
const base = { id: '1', type: 'herregistratie' as const, documentIds: [], createdAt: '', updatedAt: '', submittedAt: '2024-05-12' };
|
|
|
|
describe('submittedRow', () => {
|
|
it('heading is the type, subtitle is the purpose', () => {
|
|
const row = submittedRow({ ...base, status: { tag: 'InBehandeling', referentie: 'R1', manual: false } } as Aanvraag);
|
|
expect(row.heading).toBe(TYPE_LABELS.herregistratie);
|
|
expect(row.subtitle).toBe(purposeLabel('herregistratie'));
|
|
});
|
|
|
|
it('status line carries the status label, reference and submit date', () => {
|
|
const row = submittedRow({ ...base, status: { tag: 'InBehandeling', referentie: 'R1', manual: false } } as Aanvraag);
|
|
expect(row.status).toContain(statusLabel({ tag: 'InBehandeling', referentie: 'R1', manual: false }));
|
|
expect(row.status).toContain('R1');
|
|
expect(row.status).toContain('12 mei 2024');
|
|
});
|
|
|
|
it('manual review adds a note; rejection adds its reason', () => {
|
|
const manual = submittedRow({ ...base, status: { tag: 'InBehandeling', referentie: 'R1', manual: true } } as Aanvraag);
|
|
expect(manual.status).toContain('handmatig');
|
|
const rejected = submittedRow({ ...base, status: { tag: 'Afgewezen', referentie: 'R2', reden: 'Onvoldoende uren' } } as Aanvraag);
|
|
expect(rejected.status).toContain('Onvoldoende uren');
|
|
});
|
|
});
|
|
|
|
describe('detailRows', () => {
|
|
it('lists soort/waarvoor/status/referentie/ingediend, plus reason when rejected', () => {
|
|
const rows = detailRows({ ...base, status: { tag: 'Afgewezen', referentie: 'R2', reden: 'Onvoldoende uren' } } as Aanvraag);
|
|
const values = rows.map((r) => r.value);
|
|
expect(values).toContain(TYPE_LABELS.herregistratie);
|
|
expect(values).toContain('R2');
|
|
expect(values).toContain('Onvoldoende uren');
|
|
expect(rows.length).toBe(6);
|
|
});
|
|
|
|
it('reference falls back to em dash for a Concept', () => {
|
|
const rows = detailRows({ ...base, submittedAt: undefined, status: { tag: 'Concept', stepIndex: 0, stepCount: 3 } } as Aanvraag);
|
|
const ref = rows.find((r) => r.value === '—');
|
|
expect(ref).toBeTruthy();
|
|
expect(rows.length).toBe(5);
|
|
});
|
|
});
|