Potencjalne błędy:
- brak 'from' gdy jest 'to' = /expenses/filter?to=2000-01-01
- brak 'to' gdy jest 'from' = /expenses/filter?from=2000-01-01
- brak 'month' gdy jest 'year'= /expenses/filter?year=2000
- brak 'year' gdy jest 'month' = /expenses/filter?month=may
Klasa MissingExpensesFilterException powinna rozszerzać RuntimeException, dla ułatwienie odnalezienia miejsca możesz dodać w klasie prywatne pole, np.: 'errorCode', które będzie uzupełnianie w zależności od wystąpienie, przykładowe wywołanie:
throw new MissingExpensesFilterException(MISSING_FILTER_KEY, UUID) - UUID to dowolny identyfikator przypisany na sztywno (zachardcodowany w miejscu wystąpienia wyjątku).Stosowanie takich identyfikatorów, ułatwia szukania miejsc, w których wystąpił błąd.
Enum ExpensesExceptionErrorMessages powinien mieć klusze (w przyszlości będzie wozwijany):
- MISSING_FILTER_KEY("missing filter key")
pseudokod dla ExpensesService i metody getFilteredExpenses - propozycja przekształcenia, nazwy mogą zasugerować rozwiązania i sprawdzenia:
```
getFilteredExpenses(Map filter)
return =
if (isFilterForFromAndToDate(filter)) then getAllExpensesBetweenDate(filter)
else
if (isFilterForMonthAndYear(filter)) then getAllExpensesForMonthInYear(filter)
else
emptyList
```
Testowanie Postmanem, lub innym narzędziem, np.: CURL, powinno dać w odpowiedzi: "500 Internal Service Error", w tym zadaniu liczy się tylko informacja w logach, czy błąd został poprawnie zalogowany.
Robert Szczygielski Dice Dev. Polityka Prywatności i Regulamin Szkoleń Online
Strona www stworzona w kreatorze WebWave.