refactor: one member order for the 3 wizard containers (RD-38)
RD-22 and RD-23 brought the wizard containers under the 250-line budget, so `max-lines` reports nothing. The files still read badly. Line count was never the problem. Fix three things in all three containers: 1. The member order was scrambled, and it differed per file. `registratie` declared `draftSync` in the middle of a run of `computed`s; `herregistratie` read `this.stepLabels.length` seven lines before `stepLabels` existed; the three files put the copy arrays in three different places. All three now use one nine-section order, so they compare side by side. 2. Pure logic sat in the container. Extract `digitalDocumentIds` into `upload.machine.ts` — the "digital and finished uploading" filter was written out four times, and it removes a `documentId!` assertion from both containers. Extract `diplomaMsg` into a sibling of the step files. 3. Comments carried archaeology. Drop the three RD-05 references and keep the rule. Drop "replaces sessionStorage" and the note about focus management that moved to the shell. Fix `intake`'s class comment, which claimed answers persist to sessionStorage and was contradicted 30 lines below. `phase` deliberately stays in all three: it cannot live in `domain/`, and three siblings plus three specs is a worse trade than 17 readable lines. The store ⇄ `draftSync` cycle also stays — both callbacks are deferred, so it is safe, and one comment now names it. No behaviour change. Member lists and every `private`/`protected`/`readonly` modifier are unchanged, which the showcase depends on. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { DuoLookupDto } from '@registratie/contracts/duo-diplomas.dto';
|
||||
import { diplomaMsg } from './diploma-msg';
|
||||
import { HANDMATIG } from './beroep.step';
|
||||
|
||||
const data: DuoLookupDto = {
|
||||
diplomas: [
|
||||
{
|
||||
id: 'd1',
|
||||
naam: 'Verpleegkunde',
|
||||
instelling: 'Hogeschool Utrecht',
|
||||
jaar: 2019,
|
||||
beroep: 'Verpleegkundige',
|
||||
policyQuestions: [
|
||||
{ id: 'q1', vraag: 'Vraag 1', type: 'ja-nee' },
|
||||
{ id: 'q2', vraag: 'Vraag 2', type: 'tekst' },
|
||||
],
|
||||
},
|
||||
],
|
||||
handmatig: {
|
||||
beroepen: ['Verpleegkundige', 'Arts'],
|
||||
policyQuestions: [{ id: 'm1', vraag: 'Handmatige vraag', type: 'ja-nee' }],
|
||||
},
|
||||
};
|
||||
|
||||
describe('diplomaMsg', () => {
|
||||
it('resolves a known diploma into KiesDiploma with the server-derived beroep', () => {
|
||||
expect(diplomaMsg(data, 'd1')).toEqual({
|
||||
tag: 'KiesDiploma',
|
||||
diplomaId: 'd1',
|
||||
beroep: 'Verpleegkundige',
|
||||
vraagIds: ['q1', 'q2'],
|
||||
});
|
||||
});
|
||||
|
||||
it('resolves the manual sentinel into KiesHandmatig with the maximal question set', () => {
|
||||
expect(diplomaMsg(data, HANDMATIG)).toEqual({ tag: 'KiesHandmatig', vraagIds: ['m1'] });
|
||||
});
|
||||
|
||||
it('returns null for an unknown diploma id', () => {
|
||||
expect(diplomaMsg(data, 'onbekend')).toBeNull();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user