modulo 16 di 24 / Ore 21-40

Moduli 9-16 / Checkpoint 40 ore

Verificare prestito e chiusura prestito

Come verificare manualmente il ciclo completo prestito/chiusura nel Registro prima della presentazione: scenario step-by-step, dati da controllare, errori da testare.

25 min Architettura del software

Verificare prestito e chiusura prestito

Questa lezione appartiene al Modulo 15 — Verificare il comportamento.

Obiettivo della lezione

Verificare manualmente il ciclo completo di apertura e chiusura di un prestito nel Registro, controllando sia il caso felice sia i casi di errore, e documentare il risultato.

Alla fine hai la certezza che il ciclo prestito/chiusura funziona end-to-end — dalla UI all’aggiornamento in localStorage.

Perché serve nel percorso

I test automatici verificano i casi d’uso in isolamento. La verifica manuale verifica l’integrazione: il form HTML è connesso al caso d’uso, il caso d’uso scrive nell’adapter, l’adapter aggiorna localStorage, e la UI mostra il risultato aggiornato.

Nel Registro del laboratorio

Scenario di verifica — ciclo completo:

Prima di iniziare: apri localStorage nel browser (DevTools → Application → Local Storage) su una finestra laterale per vedere i dati in tempo reale.

Passo 1 — Prerequisito: uno strumento disponibile

Verifica che in localStorage esista almeno uno strumento con status: "disponibile". Se non esiste, registrane uno dal form.

Dati attesi in localStorage:

[{ "id": "str-001", "name": "Oscilloscopio", "category": "Misura", "status": "disponibile" }]

Passo 2 — Registra il prestito

Apri la sezione “Prestiti” del Registro. Seleziona lo strumento “str-001” e inserisci un identificativo studente (“stu-042”). Clicca “Presta”.

Verifica nella UI: appare il messaggio “Prestito registrato.”?

Verifica in localStorage:

  • registro_strumenti: lo strumento “str-001” ha ora "status": "in_prestito".
  • registro_prestiti: è apparso un nuovo oggetto con strumentoId: "str-001", apertura: [data], chiusura: null.

Passo 3 — Verifica che lo strumento non possa essere prestato di nuovo

Prova a registrare un secondo prestito per lo stesso strumento. Verifica che appaia il messaggio di errore: “Questo strumento è già in prestito a qualcun altro.” (o equivalente). Verifica che localStorage non abbia un secondo prestito per “str-001”.

Passo 4 — Chiudi il prestito

Trova il prestito aperto nella lista e clicca “Chiudi prestito”. Verifica nella UI: appare il messaggio di conferma?

Verifica in localStorage:

  • registro_strumenti: lo strumento “str-001” ha ora "status": "disponibile".
  • registro_prestiti: il prestito ha ora chiusura: [data] (non più null).

Passo 5 — Verifica che il prestito chiuso non possa essere richiuso

Prova a chiudere di nuovo lo stesso prestito. Verifica che appaia il messaggio di errore: “Questo prestito è già stato chiuso in precedenza.” Verifica che chiusura in localStorage non sia cambiata.

Passo 6 — Persistenza

Ricarica la pagina. Verifica che:

  • lo strumento sia ancora “disponibile” nella lista;
  • il prestito chiuso appaia nella cronologia (se la UI la mostra);
  • nessun dato sia andato perso.

Procedura guidata

Esegui i 6 passi nell’ordine. Per ogni passo: scrivi “OK” o “FALLITO” nella scheda. Se un passo fallisce: nota esattamente cosa è andato storto (messaggio di errore, dati mancanti in localStorage, UI non aggiornata).

Attività in classe

Esegui il ciclo completo e compila la scheda di verifica:

## Verifica ciclo prestito/chiusura

Data: __
Browser: __

Passo 1 — Strumento disponibile in localStorage: OK / FALLITO
  Dati verificati in localStorage: sì/no

Passo 2 — Registra prestito:
  Messaggio UI: OK / FALLITO (testo messaggio: __)
  Stato strumento aggiornato in localStorage: OK / FALLITO
  Prestito creato in localStorage: OK / FALLITO

Passo 3 — Secondo prestito rifiutato:
  Messaggio di errore: OK / FALLITO (testo: __)
  localStorage invariato: OK / FALLITO

Passo 4 — Chiudi prestito:
  Messaggio UI: OK / FALLITO
  Stato strumento tornato a "disponibile": OK / FALLITO
  chiusura impostata in localStorage: OK / FALLITO

Passo 5 — Secondo tentativo di chiusura rifiutato:
  Messaggio di errore: OK / FALLITO

Passo 6 — Persistenza dopo ricaricamento:
  Dati presenti: OK / FALLITO

Problemi trovati:
Azioni correttive:

Spiegazione guidata per studiare

La verifica manuale end-to-end controlla cose che i test unitari non vedono:

  • il form HTML ha gli ID corretti e corrisponde a quello atteso dal JS;
  • il caso d’uso riceve i parametri giusti (non undefined per via di un campo con ID sbagliato);
  • l’adapter di localStorage usa le chiavi corrette;
  • la UI mostra il risultato nell’elemento giusto (stesso ID di quello che il JS aggiorna).

Cosa guardare in localStorage durante la verifica:

Apri DevTools → Application → Local Storage → http://localhost:... Vedrai le chiavi registro_strumenti e registro_prestiti. Clicca su ognuna per vedere il JSON completo.

Se dopo il prestito registro_strumenti non è cambiato, il problema è o nel caso d’uso (non chiama archivio.aggiorna) o nell’adapter (non salva). Se il messaggio UI non appare, il problema è nel form handler.

Come isolare il problema:

Messaggio UI non appare → problema nel form handler (mostraMessaggio)
UI aggiornata ma localStorage no → problema nell'adapter (salva o aggiorna)
localStorage aggiornato ma UI vecchia → problema nell'aggiornamento della lista
Tutto funziona ma si perde dopo ricaricamento → problema con la chiave localStorage

Passo per passo nel progetto

  1. Pulisci localStorage prima della verifica (DevTools → Clear All o localStorage.clear() in console).
  2. Esegui i 6 passi dello scenario nell’ordine.
  3. Dopo ogni passo: verifica sia la UI sia localStorage.
  4. Documenta ogni passo nella scheda.
  5. Se trovi un problema: tieni aperto il file corrispondente e correggi.
  6. Riesegui il ciclo completo dopo ogni correzione.

Prova di comprensione

  • Perché la verifica manuale è necessaria anche se i test automatici passano?
  • Come si distingue un problema nel form handler da un problema nell’adapter guardando localStorage?
  • Cosa verifica il passo 5 (secondo tentativo di chiusura) che i test unitari potrebbero non coprire?
  • Perché si ricarica la pagina nel passo 6?

Errori da evitare

  • saltare la verifica di localStorage durante lo scenario — i test passano ma i dati potrebbero non essere salvati correttamente;
  • eseguire la verifica con dati già presenti in localStorage da sessioni precedenti — i dati vecchi possono mascherare problemi;
  • fermarsi al passo 2 (caso felice) senza testare i casi di errore (passi 3 e 5);
  • non documentare i problemi trovati — perdi le informazioni per la correzione.

Prodotto da consegnare

La scheda di verifica compilata con tutti e 6 i passi, ogni stato (OK/FALLITO), i problemi trovati e le correzioni applicate. Il ciclo completo funziona end-to-end senza errori.

Checklist di chiusura

  • tutti e 6 i passi dello scenario sono stati eseguiti
  • sia la UI sia localStorage sono stati verificati ad ogni passo
  • il secondo prestito per lo stesso strumento viene rifiutato correttamente
  • il secondo tentativo di chiusura viene rifiutato correttamente
  • dopo il ricaricamento i dati sono ancora presenti
  • la scheda è compilata con le evidenze concrete

Risultato atteso

Ho eseguito il ciclo completo prestito/chiusura nel Registro.
Tutti e 6 i passi hanno restituito OK.
Ho verificato sia la UI (messaggi corretti) sia localStorage (dati aggiornati).
Il Registro gestisce correttamente: doppio prestito rifiutato, doppia chiusura rifiutata, persistenza.
Il ciclo è pronto per essere mostrato durante la presentazione.