-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/backend test sara #4
base: master
Are you sure you want to change the base?
Conversation
Defined Drink as an entity and Category as a value object.
- create DTOs, they map the API responses - create service with 3 public method that map 3 endpoints: list of categories, list of drink with specific catergory, list of drink with specific name keyword - test happy path for all the public method and two edge cases for the method with params
persists the results from external API
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
Alcuni piccoli appunti ed una veloce panoramica: ho implementato il progetto cercando di utilizzare l'onion architecture e utilizzando qualche nozione di Domain Drive Design; entrambe le ho studiare per conto mio un po' di mesi fa e avevo avuto poche occasioni per metterle in pratica, quindi potrebbero esserci degli errorini (nel caso sono molto lieta di ricevere dritte a riguardo!). Per questioni di tempistiche non ho separato le Entity del layer di dominio dalle Entity del layer repository e anche lo strato di Service presente condensa sia quello di dominio che di application.
Per quanto riguarda lo strato di Rest controller ci sono parecchi nice to have che sarebbe stato carino implementare ma per cui non ho avuto abbastanza tempo, ossia un Controller Advice, della documentazione sui servizi utilizzando Swagger o OpenAPI, validazione dei dati in entrata (per esempio controllare che la categoria utilizzata come filtro sia una categoria valida ed esistente e in caso contrario dare un messaggio appropriato all'utente) e utilizzare un wrapper come response nei servizi.
Per lo strato invece di persistenza, assumendo che i dati non cambino così spesso, sarebbe stato più opportuno implementare un upsert temporizzato, cioè salvare solo i dati che non si hanno già e aggiornare quelli che ci sono solo dopo un certo tempo. Una cache tipo Redis sarebbe stata più appropriata a mio avviso.
Per ultimi ma non di importanza, mancano log e gestione delle eccezioni (annesso creazione di eccezioni custom puntuali).
Ho scelto di non creare unit test per il layer di repository su database perché do per scontato che i metodi offerti da JPA siano corretti e funzionanti.