diff --git a/docs/superpowers/plans/2026-07-05-utenti-ruoli-login-inline.md b/docs/superpowers/plans/2026-07-05-utenti-ruoli-login-inline.md index 70e0d79..a1fdbae 100644 --- a/docs/superpowers/plans/2026-07-05-utenti-ruoli-login-inline.md +++ b/docs/superpowers/plans/2026-07-05-utenti-ruoli-login-inline.md @@ -52,18 +52,15 @@ describe('migrazioni ruoli/guid/autore', () => { 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:'); 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(); const row = db.prepare("SELECT role FROM users WHERE username = 'vecchio'").get() as { role: string }; expect(row.role).toBe('superuser'); - expect(path).toBe(':memory:'); }); it('posts ha la colonna author_id', () => {