Skip to content

Latest commit

 

History

History
57 lines (48 loc) · 2.9 KB

README.md

File metadata and controls

57 lines (48 loc) · 2.9 KB

Тестовое задание Verme

Установка

  • Создать виртуальное окружение
  • Установить пакеты из 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 будет лежать большое количество записей, будут долго вычисляться потомки/предки корневого элемента.