### 🚨 Исправлено - **Удалено поле username из модели Author**: Поле `username` больше не является частью модели `Author` - Убрано свойство `@property def username` из `orm/author.py` - Обновлены все сервисы для использования `email` или `slug` вместо `username` - Исправлены резолверы для исключения `username` при обработке данных автора - Поле `username` теперь используется только в JWT токенах для совместимости ### 🧪 Исправлено - **E2E тесты админ-панели**: Полностью переработаны E2E тесты для работы с реальным API - Тесты теперь делают реальные HTTP запросы к GraphQL API - Бэкенд для тестов использует выделенную тестовую БД (`test_e2e.db`) - Создан фикстура `backend_server` для запуска тестового сервера - Добавлен фикстура `create_test_users_in_backend_db` для регистрации пользователей через API - Убраны несуществующие GraphQL запросы (`get_community_stats`) - Тесты корректно работают с системой ролей и правами администратора ### �� Техническое - **Рефакторинг аутентификации**: Упрощена логика работы с пользователями - Убраны зависимости от несуществующих полей в ORM моделях - Обновлены сервисы аутентификации для корректной работы без `username` - Исправлены все места использования `username` в коде - **Улучшена тестовая инфраструктура**: - Тесты теперь используют реальный HTTP API вместо прямых DB проверок - Правильная изоляция тестовых данных через отдельную БД - Корректная работа с системой ролей и правами
This commit is contained in:
@@ -33,8 +33,8 @@ async def load_shouts_coauthored(_: None, info: GraphQLResolveInfo, options: dic
|
||||
return []
|
||||
q = query_with_stat(info)
|
||||
q = q.where(Shout.authors.any(id=author_id))
|
||||
q, limit, offset = apply_options(q, options)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset)
|
||||
q, limit, offset, sort_meta = apply_options(q, options)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset, sort_meta=sort_meta)
|
||||
|
||||
|
||||
@query.field("load_shouts_discussed")
|
||||
@@ -52,8 +52,8 @@ async def load_shouts_discussed(_: None, info: GraphQLResolveInfo, options: dict
|
||||
return []
|
||||
q = query_with_stat(info)
|
||||
options["filters"]["commented"] = True
|
||||
q, limit, offset = apply_options(q, options, author_id)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset)
|
||||
q, limit, offset, sort_meta = apply_options(q, options, author_id)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset, sort_meta=sort_meta)
|
||||
|
||||
|
||||
def shouts_by_follower(info: GraphQLResolveInfo, follower_id: int, options: dict[str, Any]) -> list[Shout]:
|
||||
@@ -87,8 +87,8 @@ def shouts_by_follower(info: GraphQLResolveInfo, follower_id: int, options: dict
|
||||
.scalar_subquery()
|
||||
)
|
||||
q = q.where(Shout.id.in_(followed_subquery))
|
||||
q, limit, offset = apply_options(q, options)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset)
|
||||
q, limit, offset, sort_meta = apply_options(q, options)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset, sort_meta=sort_meta)
|
||||
|
||||
|
||||
@query.field("load_shouts_followed_by")
|
||||
@@ -144,8 +144,8 @@ async def load_shouts_authored_by(_: None, info: GraphQLResolveInfo, slug: str,
|
||||
else select(Shout).where(and_(Shout.published_at.is_not(None), Shout.deleted_at.is_(None)))
|
||||
)
|
||||
q = q.where(Shout.authors.any(id=author_id))
|
||||
q, limit, offset = apply_options(q, options, author_id)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset)
|
||||
q, limit, offset, sort_meta = apply_options(q, options, author_id)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset, sort_meta=sort_meta)
|
||||
except Exception as error:
|
||||
logger.debug(error)
|
||||
return []
|
||||
@@ -172,8 +172,8 @@ async def load_shouts_with_topic(_: None, info: GraphQLResolveInfo, slug: str, o
|
||||
else select(Shout).where(and_(Shout.published_at.is_not(None), Shout.deleted_at.is_(None)))
|
||||
)
|
||||
q = q.where(Shout.topics.any(id=topic_id))
|
||||
q, limit, offset = apply_options(q, options)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset)
|
||||
q, limit, offset, sort_meta = apply_options(q, options)
|
||||
return get_shouts_with_links(info, q, limit, offset=offset, sort_meta=sort_meta)
|
||||
except Exception as error:
|
||||
logger.debug(error)
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user