longevity: index.astro smista per ruolo, test del gestionale
pages/longevity/index.astro: trainer e admin → /longevity/gestionale, cliente → /longevity/io come prima (l'assert esistente sul redirect a /longevity/io resta valido, il ramo cliente lo chiama ancora testualmente). tests/longevity/pagine.test.ts: le quattro pagine del gestionale esistono, usano variante="gestionale", non toccano il DB direttamente e non nominano il database anagrafico riservato; index.astro smista per ruolo. Refs #2
This commit is contained in:
@@ -94,3 +94,41 @@ describe('il guscio della piattaforma', () => {
|
||||
expect(src).toMatch(/Astro\.redirect\(\s*['"`]\/longevity\/io['"`]/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('il gestionale del trainer (Unità 2b)', () => {
|
||||
const PAGINE_GESTIONALE = [
|
||||
'src/pages/longevity/gestionale/index.astro',
|
||||
'src/pages/longevity/gestionale/nuovo.astro',
|
||||
'src/pages/longevity/gestionale/cliente/[code].astro',
|
||||
'src/pages/longevity/gestionale/cliente/[code]/checkup.astro',
|
||||
];
|
||||
|
||||
it('ogni pagina del gestionale esiste e usa la variante "gestionale" del layout', () => {
|
||||
for (const p of PAGINE_GESTIONALE) {
|
||||
expect(existsSync(join(process.cwd(), p))).toBe(true);
|
||||
expect(leggi(p)).toMatch(/variante=["']gestionale["']/);
|
||||
}
|
||||
});
|
||||
|
||||
it('nessuna pagina del gestionale interroga il database direttamente', () => {
|
||||
// Il gestionale legge sempre attraverso lib/longevity (anagrafica, gestionale, vista):
|
||||
// una .prepare( dentro una .astro sarebbe una query scritta a mano nella pagina.
|
||||
for (const p of PAGINE_GESTIONALE) {
|
||||
expect(leggi(p)).not.toMatch(/\.prepare\(/);
|
||||
}
|
||||
});
|
||||
|
||||
it('nessuna pagina del gestionale nomina il database anagrafico riservato', () => {
|
||||
for (const p of PAGINE_GESTIONALE) {
|
||||
expect(leggi(p)).not.toMatch(/Identity/);
|
||||
}
|
||||
});
|
||||
|
||||
it('index.astro smista per ruolo: trainer e admin al gestionale, il cliente al proprio referto', () => {
|
||||
const src = leggi('src/pages/longevity/index.astro');
|
||||
expect(src).toMatch(/Astro\.redirect\(\s*['"`]\/longevity\/gestionale['"`]/);
|
||||
expect(src).toMatch(/trainer/);
|
||||
expect(src).toMatch(/admin/);
|
||||
expect(src).toMatch(/Astro\.redirect\(\s*['"`]\/longevity\/io['"`]/);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user