docs: rifinisci test migrazione nel piano

This commit is contained in:
2026-07-05 21:38:47 +02:00
parent d0fa75a3d3
commit d4cf359805
@@ -52,18 +52,15 @@ describe('migrazioni ruoli/guid/autore', () => {
expect(guids.size).toBe(rows.length); expect(guids.size).toBe(rows.length);
}); });
it('migra il ruolo editor a superuser', () => { it('lo statement di migrazione unifica editor in superuser', () => {
// La migrazione gira dentro createDb, ma :memory: non persiste tra due boot: qui
// verifichiamo l'invariante SQL applicata dalla migrazione (editor → superuser).
// L'end-to-end su DB pre-esistente è coperto dallo smoke di produzione (Task 15).
const db = createDb(':memory:'); const db = createDb(':memory:');
db.prepare("INSERT INTO users (username, password_hash, role) VALUES ('vecchio', 'x', 'editor')").run(); db.prepare("INSERT INTO users (username, password_hash, role) VALUES ('vecchio', 'x', 'editor')").run();
// Rilancia la migrazione: nella stessa istanza simuliamo un secondo boot ricreando su file? No:
// la migrazione gira in createDb, quindi inseriamo PRIMA e ricreiamo su un file condiviso.
const path = ':memory:';
// Verifica idempotenza logica: la UPDATE è esposta anche come effetto di createDb; qui
// testiamo direttamente l'invariante col DB già migrato + insert manuale + re-run UPDATE.
db.prepare("UPDATE users SET role = 'superuser' WHERE role = 'editor'").run(); db.prepare("UPDATE users SET role = 'superuser' WHERE role = 'editor'").run();
const row = db.prepare("SELECT role FROM users WHERE username = 'vecchio'").get() as { role: string }; const row = db.prepare("SELECT role FROM users WHERE username = 'vecchio'").get() as { role: string };
expect(row.role).toBe('superuser'); expect(row.role).toBe('superuser');
expect(path).toBe(':memory:');
}); });
it('posts ha la colonna author_id', () => { it('posts ha la colonna author_id', () => {