!Примечание: Пункты с 1 по 3 обязательны для выполнения, они необходимы для настройки проекта и его запуска.
-
Клонируем проект
- git clone git@github.com:jtokoev/tm-testing.git && cd tm-testing
-
Собираем проект
- прежде убедитесь, что порты
88(nginx), 5432(pqsql), 8093(adminer)свободны, если нет, то необходимо отредактировать порты в docker-compose.override.yml.dist - при желании можете удалить конфинурацию контейнера
adminerтут docker-compose.override.yml.dist - команда:
make build.
- прежде убедитесь, что порты
-
Настройка базы данных, миграции, фикстуры
- команда:
make db.
- команда:
-
Тесты
- команда:
make check
- команда:
-
http://localhost:88 (укажите свой порт если вы поменяли)
-
Как только пользователь заходит на главную страницу, система генерит вопросы в случайно порядке и сохраняет в сессию, я думал, куда лучше это сохранить, но в рамках этой задачи решил в сессиях
-
После каждого ответа, из сессии удалется вопрос на который уже получен ответ
-
Ответы в свою очередь тоже храняться в сессии пока не закончатся тесты
-
После завершения ворпосов, система сохраняет полученные ответы в базу (или в другой источник, нужно только реализовать интерфейс MemberRepositoryInterface.php и добавить настройки в services.yaml), и перенавравляет на страницу результатов
-
На странице результатов показывается список вопросов и ответы пользователя с пометкой верный ответ или нет
- По хорошему надо было все исключения обернуть в абстракцию с методами (пример ниже), и при исключениях ловить их в условном листенере, обрабатывать их, записывать логи, отправлять уведомления админам если код из 5** и так далее. Но в рамках этой задачи не стал копать глубоко
- `getCodeо
getMessagegetDetails
- Написал функциональный тест на процесс тестирования в браузере
- Так же написал unit тест QuestionStorageTest.php для сервиса QuestionStorage.php для демонстрации, что unit тесты тоже пишу
- Docker: Контейнеризация.
- Symfony 6.3: PHP-фреймворк.
- PHP 8.1: PHP.
- PostgreSQL 15.4: База данных.
- Php-cs-fixer (Phpfixer): Форматирование PHP-кода.
- Psalm: Статический анализатор PHP.
- PHPUnit: Тестирование.
- Makefile: Автоматизация сборки.
- PhpStorm: IDE
- doctrine-test-bundle: Библиотека для тестирования Doctrine ORM.
- macOS Ventura
- MacBook 16 M1 Pro
- Телеграм: @tokoevj