Все константы перенесены в .env файл. достаточный для запуска .env загружен в репо.
- Реализовать вывод количества подменю и блюд для Меню через один (сложный) ORM запрос. - в репозитории menu menu.py - orm_read_menu
- Реализовать тестовый сценарий «Проверка кол-ва блюд и подменю в меню» из Postman с помощью pytest - сценарий использовался в тестах: test_api_all.py
- Описать ручки API в соответствий c OpenAPI - openapi.json
- Реализовать в тестах аналог Django reverse() для FastAPI - conftest.py - функция reverse_url
- Добавить эндпоинт (GET) для вывода всех меню со всеми связанными подменю и со всеми связанными блюдами. - последний всё в том же репозитории menu.py
- Фоновая задача: синхронизация Excel документа и БД. - admin_task.py репо к ней:admin.py
- Доступная наружу папка(имя файла - хардкод) admin
- настройка этой папки в docker-compose.yaml - docker-compose.yaml в строке 63. Исправить при необходимости напрямую там или переменную в дотЕНВ.
git clone https://github.com/gramatan/fastapi_restaurant.git
- Перейдите в директорию проекта и выполните:
docker-compose up
- Перейдите в директорию проекта и выполните:
docker-compose -f docker-compose-test.yaml up
Результаты тестов будут отображены в консоли.
Примечание: Оба варианта используют одни и те же порты, поэтому при запуске одного из них, другой должен быть остановлен.
Приложение готово к тестированию! Оно доступно на порту 8000. Основной исполняемый файл находится по адресу /app/main.py
.
Тесты находятся в директории app/tests
.
Все тесты API находятся в test_api_all.py и используют reverse_url() для получения адресов. Все тесты из сценария "Проверка количества блюд и подменю в меню" входят в общий список тестов.
Подсчет количества подменю и блюд без использования полей реализован в menu.py.
Он доступен через конечную точку get("/api/v1/menus/ORM/{menu_id}")
.
openapi.json содержит описание API.
Вы можете очистить таблицы, запустив файл create_tables.py
. По умолчанию база данных пуста и готова к использованию.
При запуске через тесты для базы данных не предусмотрен именованный том, поэтому данные будут потеряны при перезапуске контейнера.