
Zadanie
Ostatnio zajmowaliśmy się wakacjami – tym razem… wielbłądami. W skrócie zadanie polega na konsumowaniu API transportu wielbłądziego – kolejny raz się nie przesłyszałeś: wielbłądy. Dodatkowo również musimy wykonać kilka operacji i obliczeń na otrzymanych danych. Już tłumaczę dokładniej.
W tym repozytorium znajduję się aplikacja springowa, jeśli ją uruchomimy to będziemy mieli możliwość do wysyłania zapytań do API z wielbłądami. Właśnie na podstawie tego API trzeba wykonać poniższe zadania:
- Zwróć listę przejazdów wielbłądów,
- Zwróć listę przejazdów z podanego miasta,
- Zwróć listę przejazdów z do podanego miasta,
- Zwróć listę przejazdów danego wielbłąda,
- Zwróć listę przejazdów, gdzie dana wyjazdu mieści się w podanym zakresie dat,
- Zwróć listę przejazdów dla podanej daty wyjazdu,
- Zwróć listę przejazdów z podanego miasta, lecz tylko te, w których udźwig wielbłąda jest większy niż ten podany,
- Zwróć listę miast, które podany wielbłąd odwiedził,
- Zwróć listę miasta dla podanego państwa,
- Zwróć wielbłądy starsze od podanego wieku,
- Zwróć wielbłądy młodsze od podanego wieku,
- Zwróć wielbłądy ze względu na płeć,
- Zwróć wielbłąda po nazwie,
- Zwróć czas pracy danego wielbłąda.
Wszystkie te powyższe zadania są zapisane jako metody w interfejsie CamelTransportService w tym repozytorium. W swoim rozwiązaniu musisz po prostu go zaimplementować.
Dokumentację całego restowego API znajdziesz tutaj.
Jak uruchomić aplikację
- Sklonuj repozytorium gita,
- Wejdź do katalogu projektu oraz w konsoli wpisz: mvn install
- Jeśli projekt się zbudujesz przejdź do folderu target i wpisz komendę
java -jar Camel-0.0.1-SNAPSHOT.jar
Po chwili aplikacja powinna się uruchomić pod adresem: localhost:8090. Aplikacja może również zostać uruchomiona bezpośrednio w IntelliJ Idea klikając Run na klasie CamelApplication.
Jeśli chcesz zmienić port, na którym ma wystartować aplikacja to wystarczy wejść w plik /src/main/resource/application.properties oraz zmienić poniższą linię:
server.port=8090
Po zmianie portu należy wykonać powyższe kroki ponownie.
Pamiętaj, że po zmianie portu należy też zmienić port podczas wysyłania zapytań – adres z dokumentacji nie będzie już aktualny!
Punktacja
Przygotowane jest 30 testów, za każdy test otrzymasz 100 punktów. Łącznie można zyskać 3000 punktów.
Porady
- Zacznij od napisania modeli na podstawie dokumentacji API,
- Mając modele napisz testy jednostkowe – zewnętrzny serwis powinnien być zmockowany (zaślepiony), na podstawie dokumentacji możesz zaaranzować swój scenariusz co API ma zwracać podczas testów,
- Do mockowania warto użyć biblioteki Mockito (jest już załączona w pom.xml),
- Zwróć uwagę na przypadki, gdy zasób nie zostanie znaleziony (Http status code 404),
- Jeśli zamierzasz mockować zewnętrzny serwis to musisz zastosować Dependency Injection, aby w prosty sposób wstrzyknąć swojego mocka podczas tworzenia obiektu,
- Rozpoczynając implementację warto na początku zaimplementować uderzanie do wszystkich potrzebnych nam end pointów restowego API,
- Zapytania do API łatwo się buduje przy użyciu RestTemplate,
- Warto przetestować sobie end pointy API w przeglądarce lub Postmanie – w przypadku przeglądarki warto pobrać sobie rozszerzenie do json np. Json Formatter,
- W razie pytań pytaj 😉
Przydatne linki
Czas
Zadanie zostało opublikowane 16 lutego, a jego rozwiązania można przesyłać do 24 lutego do godziny 23.59. Zadania wysłane później będą automatycznie usuwane.
Format
Zadanie należy wysłać na email: njd@1024kb.pl z tematem: TWÓJ-NICK_CAMEL.
Zadanie przesyłamy jako repozytorium Git – może być hostowany na GitHub, GitLab, Bitbucket – gdzie tylko chcesz. W wiadomości podajemy tylko link do repozytorium projektu. 😉
Pamiętajcie, aby do pliku .gitignore dodać:
- /target
- /out
- /.idea
- *.iml
I inne pliki/katalogi, które nie powinny być na zdalnym repozytorium.
W razie jakichkolwiek wątpliwości pytajcie jak ma wyglądać finalna aplikacja. 😉
Rozwiązanie
Rozwiązanie zadania można znaleźć w tym repozytorium.