Files
InsanityLab-web/tests/locandina-evento.test.ts
Adriano 3fff3cd2f8 Il repo resta al sito: app in radice, piattaforme nel loro repo
apps/sito passa in radice, apps/platforms si toglie: vive in
gitea:Adriano/InsanityLab-platforms, con la storia del repo comune. I piani e
le specifiche di Longevity e Campus lasciano docs/ e seguono le piattaforme.
README e compose: deploy da /opt/docker/insanitylab/src; al primo deploy .env
va spostato da apps/sito/.env alla radice.

Refs #20

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 14:25:12 +00:00

32 lines
1.4 KiB
TypeScript

import { existsSync, readFileSync } from 'node:fs';
import { describe, expect, it } from 'vitest';
// L'indirizzo della pagina evento e' stampato dentro il QR code delle locandine affisse
// in giro per Bologna: una volta in strada non si corregge piu'. Questi test tengono
// insieme le tre cose che devono restare d'accordo — la rotta servita dal sito, l'URL
// cucito nel QR e il file che la pagina offre in download.
const ROTTA = 'src/pages/promo-eventi/eventi.astro';
const URL_STAMPATO = 'https://insanitylab.it/promo-eventi/eventi';
describe('locandina In-Sanity Hour', () => {
it('la rotta che il QR indica esiste', () => {
expect(existsSync(ROTTA)).toBe(true);
});
it('il generatore della locandina punta a quella rotta', () => {
const script = readFileSync('scripts/locandina-evento.py', 'utf-8');
expect(script).toContain(`URL_EVENTO = '${URL_STAMPATO}'`);
// La rotta del file deve corrispondere alla coda dell'URL, altrimenti il QR
// porterebbe altrove: /promo-eventi/eventi <- src/pages/promo-eventi/eventi.astro
const daFile = '/' + ROTTA.replace('src/pages/', '').replace('.astro', '');
expect(URL_STAMPATO.endsWith(daFile)).toBe(true);
});
it('la locandina che la pagina offre in download esiste', () => {
const pagina = readFileSync(ROTTA, 'utf-8');
const link = pagina.match(/href="(\/locandina-[^"]+\.pdf)"/);
expect(link).not.toBeNull();
expect(existsSync(`public${link![1]}`)).toBe(true);
});
});