Ticket #163 (new compito)

Opened 3 years ago

Last modified 4 months ago

Scrivere unit tests per la "Resource API"

Reported by: fero Owned by: fspegni
Priority: minore Milestone: Futuro
Component: sviluppo Keywords: easy, automatismi,test
Cc:

Description

I modelli principali di "Gasista Felice" implementano la cosiddetta Resource API: si tratta di un insieme di property che consentono di recuperare comodamente, per una data instanza di un modello, le istanze degli altri modelli ad essa correlate (ad. es., gas.orders ritorna l'insieme degli ordini fornitori creati dal GAS gas). Per i modelli che la implementano, la Resource API è facilmente individuabile, essendo delimitata da marcatori sotto forma di commenti.

Per verificare la correttezza dell'implementazione della Resource API in questi modelli, è importante scrivere dei test automatici ('unit tests'); vedi  qui per un'introduzione all'argomento.

Suggerimento: Considerando la relativa complessità della struttura dati di Gasista Felice, dovuta al discreto numero di modelli e relazioni esistenti tra di essi (relazioni esplicitate in buona parte proprio dalla Resource API), la generazione di un ambiente adeguato per l'esecuzione dei tests potrebbe risultare impegnativo (più che altro, un po' noioso ;-)); sostanzialmente, ci sono due approcci possibili:

1) generazione dinamica degli oggetti/relazioni richieste all'interno del metodo .SetUp() di ciascun TestCase
2) utilizzo di  fixtures di test (ne abbiamo e sono in fixtures/<app name>/test_data.json)

In sostanza, l'obiettivo è quello di creare un ambiente quanto più possibile "realistico" all'interno del quale eseguire i test: una sorta di DES in miniatura, popolato di un piccolo ma rappresentativo nucleo di soggetti/oggetti (GAS, fornitori, patti di solidarietà, ordini, consegne, persone, gasisti, ecc.)

Casi utili da testare:

  • una persona (Person) non può essere collegata ad una GAS (v. modello GASMember) se non ha uno user settato
  • supplier.stocks == gasstock.stocks == pact.stocks
  • pact.gasmembers == gas.gasmembers == order.gasmembers

Change History

comment:1 Changed 4 months ago by orly

  • Milestone changed from Consegna finale to Futuro

comment:2 Changed 4 months ago by orly

  • Keywords easy, automatismi,test added; easy removed
  • Priority changed from importante to minore
Note: See TracTickets for help on using tickets.