- Создать виртуальное окружение
- Установить пакеты из
requirements.txt
- Скопировать
wfm/.env.template
вwfm/.env
- Выполнить миграции
pytest orgunits/tests/models/
pytest orgunits/tests/views/
pytest orgunits/tests/optimization/
- Запустить тесты и посмотреть, какие падают
- Доработать API views и методы Queryset моделей для приложения orgunits
- Добиться, чтобы как можно больше тестов проходили успешно
Виды тестов:
- Тесты моделей - Начать следует с тестов на модели, с их помощью разработать методы модели
- Тесты на API - Затем можно перейти к тестам API, они не будут проходить до тестов на модели
- Тесты на оптимизацию - Тесты на количество запросов к БД считаются дополнительными и повышают результат
В тестах не покрыта ситуация для дерева, имеющего большее (больше 3) количество уровней и/или больше одной ветви, например:
1
/ \
2 3
/ \
4 5
/
6
Тесты на оптимизацию не проходят так как ожидают что в методах модели Organization не будет более одного запроса к базе. За время выполнения задания было испробовано несколько вариантов и было решено остановиться на варианте, использующем 2 запроса.
Плюсы:
- Код работает корректно;
- Всего 2 обращения к базе из методов parents и children;
- Простые для понимания запросы;
- Отсутствие рекурсии при работе с базой данных (сомнительный плюс).
Минусы:
- 2 промежуточных хранилища данных для методов parents и children;
- Не проходят тесты на оптимизацию, так как ожидается всего одно обращение к базе (2 в наличии);
- Если в базе данных в таблице Organization будет лежать большое количество записей, будут долго вычисляться потомки/предки корневого элемента.