Skip to content

Foxx1990/audioteka-recruitment-assignment-e31a4b2

Repository files navigation

Audioteka: zadanie rekrutacyjne

Instalacja

Do uruchomienia wymagany jest docker

  1. Zbuduj obrazy dockera docker compose build
  2. Zainstaluj zależności docker compose run --rm php composer install.
  3. Zainicjalizuj bazę danych docker compose run --rm php php bin/console doctrine:schema:create.
  4. Zainicjalizuj kolejkę Messengera docker compose run --rm php php bin/console messenger:setup-transports.
  5. Uruchom serwis za pomocą docker compose up -d.

Jeśli wszystko poszło dobrze, serwis powinien być dostępny pod adresem https://localhost.

Przykładowe zapytania (jak komunikować się z serwisem) znajdziesz w requests.http.

Testy uruchamia polecenie docker compose run --rm php php bin/phpunit

Oryginalne wymagania dotyczące serwisu

Serwis realizuje obsługę katalogu produktów oraz koszyka. Klient serwisu powinien móc:

  • dodać produkt do katalogu,
  • usunąć produkt z katalogu,
  • wyświetlić produkty z katalogu jako stronicowaną listę o co najwyżej 3 produktach na stronie,
  • utworzyć koszyk,
  • dodać produkt do koszyka, przy czym koszyk może zawierać maksymalnie 3 produkty,
  • usunąć produkt z koszyka,
  • wyświetlić produkty w koszyku, wraz z ich całkowitą wartością.

Kod, który masz przed sobą, stara się implementować te wymagania z pomocą Symfony 6.0.

Zadanie

Użytkownicy i testerzy serwisu zgłosili następujące problemy i prośby:

  • Chcemy móc dodawać do koszyka ten sam produkt kilka razy, o ile nie zostanie przekroczony sumaryczny limit sztuk produktów. Teraz to nie działa.
  • Limit koszyka nie zawsze działa. Wprawdzie, gdy podczas naszych testów dodajemy czwarty produkt do koszyka to dostajemy komunikat Cart is full., ale pomimo tego i tak niektóre koszyki w bazie danych mają po cztery produkty.
  • Najnowsze (ostatnio dodane) produkty powinny być dostępne na początkowych stronach listy produktów.
  • Musimy mieć możliwość edycji produktów. Czasami w nazwach są literówki, innym razem cena jest nieaktualna.

Prosimy o naprawienie / implementację.

PS. Prawdziwym celem zadania jest oczywiście kawałek kodu, który możemy ocenić, a potem porozmawiać o nim w czasie interview "twarzą w twarz". Przy czym pamiętaj, że liczy się nie tylko napisany kod PHP, ale także umiejętność przedstawienia czytelnego rozwiązania, użycia odpowiednich narzędzi (chociażby systemu wersjonowania), udowodnienia poprawności rozwiązania (testy) itd.

To Twoja okazja na pokazanie umiejętności, więc jeśli uważasz, że w kodzie jest coś nie tak, widzisz więcej błędów, coś powinno być zaimplementowane inaczej, możesz do listy zadań dodać opcjonalny refactoring, albo krótko wynotować swoje spostrzeżenia (może przeprowadzić coś w rodzaju code review?).

Powodzenia!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published