Migrazione: rimuove i tag orfani training.performance-class.*

Il riquadro training "performance-class" è stato rimosso dal seed nel commit
9966ec3, ma i suoi 5 tag restavano nei DB esistenti come orfani non
renderizzati (uno con un edit errato dell'editor, "Holistic Class"). Aggiunge
una DELETE idempotente per l'intero gruppo; il seed non li reinserisce
(trainings.ts non ha più questo id). Verificata su copia del DB prod: 5 -> 0
orfani, riquadri validi e 39 edit reali del pannello intatti.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-21 00:16:52 +02:00
parent 21d9755e37
commit 22c9cadb43
2 changed files with 28 additions and 0 deletions
+22
View File
@@ -139,6 +139,28 @@ describe('schema content_blocks e ruoli', () => {
}
});
it('rimuove i tag orfani training.performance-class.* (riquadro rimosso)', () => {
const dir = mkdtempSync(join(tmpdir(), 'il-db-orf-'));
const path = join(dir, 'test.db');
try {
// DB con i tag orfani del vecchio riquadro performance-class.
const db1 = createDb(path);
const ins = db1.prepare("INSERT OR REPLACE INTO content_blocks (tag, type, value, guid) VALUES (?, 'text', ?, ?)");
ins.run('training.performance-class.title', 'Holistic Class', 'g1');
ins.run('training.performance-class.caption', 'Classi fino a 8 persone', 'g2');
db1.close();
const db2 = createDb(path);
const count = (db2.prepare("SELECT count(*) c FROM content_blocks WHERE tag LIKE 'training.performance-class.%'").get() as { c: number }).c;
expect(count).toBe(0);
// I riquadri validi restano.
expect((db2.prepare("SELECT count(*) c FROM content_blocks WHERE tag = 'training.holistic-class.title'").get() as { c: number }).c).toBe(1);
db2.close();
} finally {
rmSync(dir, { recursive: true, force: true });
}
});
it('migra un DB esistente senza colonna role', () => {
// simula DB vecchio: createDb due volte sullo stesso path in-memory non è possibile,
// quindi si verifica che la migrazione sia idempotente (doppia esecuzione non lancia)