Skip to content

universe-coder/test-work-symfony

Repository files navigation

Headless Product Catalog API (Symfony 7, Doctrine ORM)

Требования: PHP 8.2+, Composer. Расширения: pdo_sqlite (или pdo_mysql/pdo_pgsql), ctype, iconv, json, mbstring.

Установка и запуск

  composer install
  # Настройте DATABASE_URL в .env при необходимости (по умолчанию SQLite: var/data.db)
  php bin/console doctrine:migrations:migrate --no-interaction
  php -S localhost:8000 -t public

API: базовый URL — http://localhost:8000

Ресурс: товар (Product). Поля: id, name, price, status (active|inactive), createdAt.

Эндпоинты

  POST   /api/products     — создать товар (body JSON: name, price, status)
  GET    /api/products/{id} — получить товар по ID
  PUT    /api/products/{id} — обновить товар (body JSON: name, price, status, все опциональны)
  PATCH  /api/products/{id} — то же, что PUT
  DELETE /api/products/{id} — удалить товар

Примеры (curl)

  # Создать товар
  curl -X POST http://localhost:8000/api/products -H "Content-Type: application/json" -d "{\"name\":\"Товар\",\"price\":\"99.99\",\"status\":\"active\"}"

  # Получить товар
  curl http://localhost:8000/api/products/1

  # Обновить товар
  curl -X PUT http://localhost:8000/api/products/1 -H "Content-Type: application/json" -d "{\"name\":\"Новое название\",\"price\":\"149.00\",\"status\":\"inactive\"}"

  # Удалить товар
  curl -X DELETE http://localhost:8000/api/products/1

Тесты

  # Создать тестовую БД и применить миграции (нужен pdo_sqlite)
  php bin/console doctrine:migrations:migrate --env=test --no-interaction
  ./vendor/bin/phpunit

Тесты: tests/Unit/Entity/ProductTest.php (unit: сущность и валидация), tests/Functional/ProductApiTest.php (функциональный: POST + GET и GET 404).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages