Skip to content

hazaveh/rs-fruits-and-vegetables

Repository files navigation

🍎🥕 Fruits and Vegetables

Notes for the 🚙 🏄🏻 reviewer

  • The test suites should run all the functionality, you can run the composer test command to run the entire test suite as well as phpstan.
  • codestyles can be tested and fixed by composer cs:check & composer cs:fix
  • I have updated the minimum php dependency to 8.2 I wanted to make use of constructor property promotion
  • I have used pest testing framework for writing the tests. tests include functional and unit suites, they also cover database testing.

🎯 Goal

We want to build a service which will take a request.json and:

  • Process the file and create two separate collections for Fruits and Vegetables
  • Each collection has methods like add(), remove(), list();
  • Units have to be stored as grams;
  • Store the collections in a storage engine of your choice. (e.g. Database, In-memory)
  • Provide an API endpoint to query the collections. As a bonus, this endpoint can accept filters to be applied to the returning collection.
  • Provide another API endpoint to add new items to the collections (i.e., your storage engine).
  • As a bonus you might:
    • consider giving option to decide which units are returned (kilograms/grams);
    • how to implement search() method collections;
    • use latest version of Symfony's to embbed your logic

✔️ How can I check if my code is working?

You have two ways of moving on:

  • You call the Service from PHPUnit test like it's done in dummy test (just run bin/phpunit from the console)

or

  • You create a Controller which will be calling the service with a json payload

💡 Hints before you start working on it

  • Keep KISS, DRY, YAGNI, SOLID principles in mind
  • Timebox your work - we expect that you would spend between 3 and 4 hours.
  • Your code should be tested

When you are finished

  • Please upload your code to a public git repository (i.e. GitHub, Gitlab)

🐳 Docker image

Optional. Just here if you want to run it isolated.

📥 Pulling image

docker pull tturkowski/fruits-and-vegetables

🧱 Building image

docker build -t tturkowski/fruits-and-vegetables -f docker/Dockerfile .

🏃‍♂️ Running container

docker run -it -w/app -v$(pwd):/app tturkowski/fruits-and-vegetables sh 

🛂 Running tests

docker run -it -w/app -v$(pwd):/app tturkowski/fruits-and-vegetables bin/phpunit

⌨️ Run development server

docker run -it -w/app -v$(pwd):/app -p8080:8080 tturkowski/fruits-and-vegetables php -S 0.0.0.0:8080 -t /app/public
# Open http://127.0.0.1:8080 in your browser

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published