POST /api/store/public/orders/{order_id}/items
В теле запроса передаются параметры:
-
product_id- идентификатор товара (обязательный параметр) -
quantity- количество товара (обязательный параметр) -
order_id- идентификатор заказа (в пути запроса передаётся id заказа) -
Метод публичный. В идеале требует авторизации пользователя (должна проходить проверка). Реализует добавление товара в заказ. Если товар уже есть в заказе, то увеличивает количество. При этом мы проверяем наличие товара. И выбрасываем ошибку, если товара нет в наличии. Так же проверяется целостность базы данных.(Если заказ не найден, то выбрасывается ошибка). (В реальных условиях проверка целостности не нужна, так как и товар и заказ уже будут в наличии).
пример ответа:
{
"order_id": 1,
"product_id": 1,
"order_quantity": 1
}docker-compose -f deploy/docker-compose.yml --project-directory . upДобавляем в .env
STORE_SERVICEDB_HOST=127.0.0.1
STORE_SERVICEDB_PORT=5432
STORE_SERVICEDB_USER=store
STORE_SERVICEDB_PASSWORD=store
STORE_SERVICEDB_BASE_NAME=storepython store/web/main.py./entrypoint.sh start_appсоздание миграций:
python common/service_db/migrator.py create {name}upgrade миграций:
python common/service_db/migrator.py upgradedowngrade миграций:
python common/service_db/migrator.py downgrade./entrypoint.sh help Проведено в ручном режиме через Swagger UI и Postman.
Предварительно в базу данных через DBeaver были добавлены сущности товара, клиента, заказа и категорий.
С помощью задействования ручки `/api/store/public/orders/{order_id}/items` можно было проверить добавление товара
в таблицу order_item а также инкрементирование его количества если товар уже был в заказе.
В реальных условиях необходимо написание интеграционных тестов c помощью pytest. (Написание тестовой базы, фабрик,
моделей, и методов для обработки запросов и работы с фабриками, а также конфтестов и тестов к ним.)
Примеры скринов тестирования приведены в документации к заданию.