chore: Add instructions
This commit is contained in:
parent
05c1a270e5
commit
5b833804e9
31
README.md
Normal file
31
README.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Zadanie Rekrutacyjne
|
||||||
|
|
||||||
|
Projekt jest w całości zdockeryzowany - wymagany docker compose. Projekt testowałem jedynie na linuksie, ale powinien działać także na innych systemach.
|
||||||
|
|
||||||
|
## Uuchomienie
|
||||||
|
```bash
|
||||||
|
# Skrypt, który odpali composera w tymczasowym kontenerze, zainstaluje zależności a następnie uruchomi projekt
|
||||||
|
$ ./bin/start.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testy
|
||||||
|
Testy są napisane w phpunicie (tam gdzie testowanie jednostkowe miało sens) oraz w behacie (tam, gdzie chciałem przetestować integracyjnie). Oba zestawy testów
|
||||||
|
można uruchomić jednym poleceniem:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./bin/test.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Uwagi
|
||||||
|
1. Robiłem jedynie to, co jest opisane w zadaniach - przykładowo dla zadania z saldem klienta zapewniłem jedynie, że jest ono zapisywane w sposób trwały - nie tworzyłem żadnych endpointów pozwlających na odpytanie o to saldo.
|
||||||
|
2. W zadaniu 35 z przesyłaniem informacji do CRM pozwoliłem sobię na zmianę kodu HTTP z 400 na 422, który semantycznie zdaje mi się być bardziej poprawny. Ponieważ jest to styk z frontendem to taka zmiana powinna być możliwa do wdrożenia, gdyby to była końcówka wywoływana przez CRM takiej zmiany bym pewnie nie wdrażał.
|
||||||
|
3. Założyłem, że walutą jest złotówka (lub inna waluta "dziesiętna"). Tam gdzie kwoty były podawane jako int uznałem, że mamy styczność z groszami (bo tak byłoby najbardziej poprawnie) tam, gdzie były to liczby zmienno-przecinkowe założyłem złotówki.
|
||||||
|
4. Waga założyłem, że jest podawana w kg.
|
||||||
|
5. Założyłem, że "co najmniej 5 produktów" oznacza "Co najmniej 5 różnych produktów".
|
||||||
|
6. Nie robiłem żadnej autoryzacji - zakładam, że odpowiednie mechanizmy są już w aplikacji dostępne i gotowe do użycia.
|
||||||
|
7. Architekturę starałem się trzymać jak najprostszą, jednak sugerując się kontekstem zadania uważam, że w przypadku rzeczywistym należałoby ją trochę zmienić - całość wygląda jakby fajnie się implementowała jako jakaś architektura eventowa.
|
||||||
|
8. Zadania robiłem w kolejności takiej, jaka zdawała mi się najbardziej odpowiednia - zakładam, ze w rzeczywistości też miałbym wgląd do backlogu i możliwość pewnej dowolności.
|
||||||
|
9. W walidacji zamówienia jest wyraźnie mowa o saldzie dodatnim - a nie wystarczającym. Oprogramowałem to zgodnie ze spisanymi wymaganiami, jednak w rzeczywistości upewniłbym się, czy na pewno chcemy pozwalać wchodzić na dowolny debet. Wszak zamówienie może być warte milion, a klient może mieć saldo wynoszące 1 grosz.
|
||||||
|
10. Zadania 39, 40 zrobiłem przy okazji dla dopełnienia zestawu testowego ;)
|
||||||
|
11. Nie celowałem w pokrycie testami 100% ani nic, pisałem testy, gdzie uznałem za słuszne.
|
||||||
|
12. Pewnie przydaloby się jakieś logowanie w aplikacji ale z doświadczenia logi najlepiej dodawać na podstawie konkretnych sytuacji aby nie spamić
|
5
bin/start.sh
Executable file
5
bin/start.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
docker compose run --rm --entrypoint="" -u "$(id -u):$(id -g)" symfony composer install
|
||||||
|
docker compose up --build -d
|
||||||
|
|
5
bin/test.sh
Executable file
5
bin/test.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
docker compose exec -u "$(id -u):$(id -g)" symfony ./vendor/bin/phpunit
|
||||||
|
docker compose exec -u "$(id -u):$(id -g)" symfony ./vendor/bin/behat
|
||||||
|
|
@ -10,9 +10,10 @@ services:
|
|||||||
- ./:/var/www
|
- ./:/var/www
|
||||||
|
|
||||||
symfony:
|
symfony:
|
||||||
build:
|
build: .
|
||||||
context: ./
|
depends_on:
|
||||||
dockerfile: Dockerfile
|
mariadb:
|
||||||
|
condition: service_healthy
|
||||||
command: ["php-fpm"]
|
command: ["php-fpm"]
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/var/www
|
- ./:/var/www
|
||||||
@ -20,6 +21,10 @@ services:
|
|||||||
mariadb:
|
mariadb:
|
||||||
image: mariadb:10.7
|
image: mariadb:10.7
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: mysql $$MYSQL_DATABASE -u$$MYSQL_USER -p$$MYSQL_PASSWORD -e 'SELECT 1;'
|
||||||
|
retries: 120
|
||||||
|
interval: 1s
|
||||||
ports:
|
ports:
|
||||||
- "3306:3306"
|
- "3306:3306"
|
||||||
environment:
|
environment:
|
||||||
|
Loading…
Reference in New Issue
Block a user