Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Фабрики для моделей Meeting и AssociationUserMeeting #224

Open
AndreyZherdetskiy opened this issue Mar 6, 2025 · 0 comments
Assignees
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@AndreyZherdetskiy
Copy link
Collaborator

AndreyZherdetskiy commented Mar 6, 2025

Приоритет задачи: высокий

Сложность задачи: средняя (решается стандартно, но может потребовать усилий при отладке или тестировании)

Количество разработчиков для выполнения задачи: 1


Зачем?

Зачем выполняется реализация задачи и какую проблему она решает.
Необходимо реализовать фабрики для создания тестовых данных встреч (Meeting) и их связей с пользователями (AssociationUserMeeting). Эти сущности важны для тестирования функциональности, связанной с управлением встречами и их участниками.

Как нужно делать?

Как мы выполняем реализацию данной задачи, какие действия нужны для достижения цели.

  1. Изучить модели и связи между моделями, необходимые для реализации функционала

  2. Создать файлы в директории fake_data_factories:

    • meeting_factory.py для фабрики Meeting
    • association_user_meeting_factory.py для фабрики AssociationUserMeeting
  3. Реализовать классы фабрик:

MeetingFactory:

  • Основные поля из Meeting:
    • title (уникальный в рамках проблемы)
    • description
    • problem_id (ForeignKey на Problem)
    • owner_id (ForeignKey на UserTabit)
    • date_meeting (дата встречи)
    • status (enum StatusMeeting)
    • place (место встречи)
    • transfer_counter (счетчик переносов даты)
    • created_at (автозаполнение)
    • updated_at (автозаполнение)

AssociationUserMeetingFactory:

  • Основные поля из AssociationUserMeeting:
    • left_id (ForeignKey на UserTabit)
    • right_id (ForeignKey на Meeting)
    • created_at (автозаполнение)
    • updated_at (автозаполнение)
  1. Предварительное создание объектов классов, с которыми есть связанные поля (использовать существующие фабрики):
  • Создать объекты UserTabit и Problem перед созданием Meeting и AssociationUserMeeting, так как они являются обязательными внешними ключами.
  • Убедиться, что создание объектов изолировано и не зависит от состояния БД.
  1. Реализовать функции для создания объектов:
  • create_meetings(count, **kwargs) - для пакетного создания встреч
  • create_user_meeting_associations(user_id, meeting_ids) - для создания связей между пользователем и встречами
  1. Интеграция в fill_db.py:
  • Добавить вызов функций создания встреч и их связей в функцию fill_all_data()
  • Убедиться, что все объекты создаются при вызове fill_all_data() (см. make-команды)
  1. Настроить логирование
    Опционально: В случае хэширования значения вывести в логи значение до хэширования

  2. Тестирование:

  • Проверить создание встреч через логи
  • Убедиться в корректности данных через DBeaver/PDAdmin
  • Проверить связи между встречами и пользователями
  1. Обновить Makefile и README.md

Где?

Где делаем реализацию задачи, какие сервисы задействованы, ссылка на требования, сcылка на API, скриншоты.

Связанные файлы:

  • src/problems/models/meeting_models.py (Meeting)
  • src/problems/models/association_models.py (AssociationUserMeeting)
  • fake_data_factories/meeting_factory.py
  • fake_data_factories/association_user_meeting_factory.py
  • fake_data_factories/fill_db.py
  • fake_data_factories/constants.py
  • Makefile
  • README.md

Технические требования:

  1. Генерация данных:
  • Уникальные названия встреч в рамках проблемы
  • Корректная привязка встреч к проблеме и владельцу
  • Правильное создание связей между пользователями и встречами
  1. Настройки фабрики:
  • Возможность переопределения любого поля
  • Поддержка batch создания
  • Корректная работа с ForeignKey
  • Правильная генерация enum значений
  • Правильная генерация дат created_at/updated_at/date_meeting
  1. Тестовые сценарии:
  • Создание нескольких встреч для одной проблемы
  • Привязка встреч к пользователю
  • Проверка уникальности названий встреч в рамках проблемы
  1. Числа и регулярные выражения в константы /fake_data_factories/constants.py
@AndreyZherdetskiy AndreyZherdetskiy added enhancement New feature or request good first issue Good for newcomers labels Mar 6, 2025
@FoxWarlock82 FoxWarlock82 self-assigned this Mar 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

2 participants