Rysunek 1. pokazuje przykładowy wygląd widoku jaki zobaczy użytkownik.
W ExpensesRepository możesz stworzyć @Query("SELECT e FROM ExpensesEntity e WHERE e.user
Rysunek 1. jest diagramem UML. przybliżającym możliwe rozwiązanie, zakodowanie, zadania.
Rysunek 2. jest przykładowym widokiem jaki może zobaczy użytkownika, po
Adnotacje:
- @MethodSource
- @ValueSource
- @CsvSource
są indywidualnym wyborem programisty, w połączeniu z @ParameterizedTest, powinna występować tylko jedna z
Rysunek 1. obrazuje wygląd wzoraca projektowego: Fabryka, i możliwe nazwy klas.
Rysunek 2. obrazuje wygląd wzoraca projektowego: Chain Of Responsibility,
Możesz sugerować się implementacja zastosowaną w wydatkach (Expenses), rozwiązanie będzie bardzo podobne.
Mając już szkielet Fabryki, wystarczy dodać nową klasę,
Możesz zasugerować się testami, które zostały napisane w ramach Wydatków (ExpensesServiceIntegrationTest)
W teście, klasie bazowej InitIntegrationTestData, dobrze będzie stworzyć dwie
Nowy test w AssetsServiceIntegrationTest jest prawie identyczny jak ten w ExpensesServiceIntergrationTest, metoda shouldThrowExceptionWhenOneOfTheFiltersKey (w Twoim wypadku możesz mieć dwie metody,
Klasa FilterStrategy powinna mieć jedną metodę:
- chackFilterForSpecification(Map<String, String> filter, FilterSpecification) - mapa filtrów i enum
-- pseudokod, ciała metody:
Klasa AssetContollerExceptionHandler posiada już jedną metodę przechwytującą wyjątek, dodanie nowych będzie analogiczne.
Klasa ErrorMessage posiada Buildera, z którego można skorzystać
Metoda getAllEntityBetweenDate w Klasie ExpensesFilterRange również powinna otrzymać nowy parametr, jednak w tym miejscu ten parametr nie będzie wykorzystywany -
Do Sprawdzenie pól w teście shouldSaveBasicPropertyInDatabase możesz wykorzystać: assertAll z JUnit5, przykładowy kod:
```
var entity = entitys.get(0);
assertAll(
()