====== Tests, code quality ====== ===== Д/З ===== ==== Reading assignment (прочитать и понять) ==== * [[https://en.wikipedia.org/wiki/SOLID|SOLID]] * [[https://en.wikipedia.org/wiki/Dependency_inversion_principle|Dependency Inversion Principle (DIP)]] * [[https://www.piter.com/product/chistaya-arhitektura-iskusstvo-razrabotki-programmnogo-obespecheniya|Мартин Роберт. «Чистая архитектура. Искусство разработки программного обеспечения»]] (рекомендуется) * [[https://docs.github.com/en/actions|Github Actions]] * [[https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement|The assert statement]] * [[https://docs.python.org/3/library/abc.html|Abstract Base Classes]] * [[https://github.com/psf/black|black]] * [[https://github.com/astral-sh/ruff|ruff]] * [[https://pytest.org|pytest]] ==== Практика (для зачета) ==== Данное Д/з должно быть единственным в вашем гитхаб. Git ветка - главная (main / master). Это нужно для простоты настройки Github actions (CI / CD). Поэтому если у Вас все Д/з в одном репозитории в отдельных каталогах, то рекомендуется для данного Д/з создать новый репозиторий. **Задача**: взять Pizza bot из прошлого Д/з, добавить в него инструменты качества кода (black, ruff, pytest), написать минимум 2-3 теста, и настроить Github Action для CI/CD. ===Требуется реализовать=== - Получите ✅ по предыдущему Д/з Pizza bot - Если в Вашем репозитории лежит несколько Д/з в разных каталогах, то требуется создать новый репозиторий и скопировать в него проект Pizza bot (протестировать, что проект запускается и работает корректно) - Добавить black в requirements.txt. Запустить black на весь проект. Посмотреть git diff и осознать как black исправил код. Сделать коммит с сообщением "black reformat whole project". - Добавить ruff в requirements.txt. Запустить ruff на весь проект. Посмотреть git diff и осознать как ruff исправил код / подсветил ошибки. Исправить все то, что не смог ruff. При крайней необходимости можно заигнорировать строчку. To ignore a specific violation on a line, append # noqa: {code} (e.g., # noqa: F841) to the end of the line. Сделать коммит с сообщением "ruff fix whole project". - Сделать рефакторинг проекта, применив инверсию зависимостей для telegram_api_client и database_client (см. запись лекции). Проверить, что Pizza bot по-прежнему корректно работает. Запустить и применить исправления black и ruff. - Добавить pytest в requirements.txt. Написать минимум 2-3 теста.Запустить и применить исправления black и ruff. - Добавить в проект конфиг для Github Actions. При каждом git pish а так же при создании pull request на github должна запускаться black, ruff и pytest. Запушить результат на гитхам, убедиться гитхаб запустил все три инструмента и результат - зеленая галочка ✅. ===Процесс сдачи=== - (студент): напишите в ТГ [[https://t.me/olegsklyarov|преподавателю]] **одно** сообщение, содержащее текст: - ''Для сдачи Д/з Tests, code quality:'' - Ссылка на гит с исходным кодом бота - (преподаватель) проверяет наличие зеленой галочки на гитхабе, делает код ревью, при необходимости задает дополнительные вопросы. - (преподаватель) отправляет с ТГ личку студенту сообщение "ФИО ✅ 7️⃣" - (студент) заходит [[chat-bots:Таблица успеваемости|на страницу успеваемости]] и проверяет корректность своей успеваемости.