Added: - Autoscroll audit and reports - Date divider analysis and Telegram comparison - Bidirectional loading tests and results - Date group manager and utilities - Test scripts and HTML test pages - CSS for chat date groups - IntersectionObserver utilities
2.8 KiB
2.8 KiB
Исправления тестов для работы с реальным API
Проблемы которые были исправлены:
1. ❌ Модель Employee требует phone_number
Проблема: User.objects.create_user() требует обязательный phone_number
Решение:
user = User.objects.create_user(
email='test@example.com',
password='testpass123',
phone_number='+79991234567', # ← Обязательное поле
first_name='Test',
last_name='User',
send_activation_email=False
)
user.email_verified = True # ← Активируем для тестов
user.is_active = True
user.save()
2. ❌ Модель Employee не имеет поля username
Проблема: Employee.username = None - email используется как USERNAME_FIELD
Решение: Убрали username='testuser' из create_user()
3. ❌ Chat.members не существует
Проблема: Модель Chat использует participants вместо members
Решение:
chat.participants.add(test_user) # ← Вместо chat.members.add()
4. ❌ @login_required редиректит на /auth/login/
Проблема: View использует @login_required, force_authenticate() не работает
Решение:
api_client.force_login(test_user) # ← Вместо force_authenticate()
5. ❌ API возвращает 'messages' вместо 'results'
Проблема: Формат ответа отличается от DRF стандарта
Решение:
data['messages'] # ← Вместо data['results']
6. ❌ API возвращает разные поля для разных направлений
Backwards loading (без after_id):
{
"ok": true,
"messages": [...],
"has_more": true,
"has_more_before": true,
"next_before_id": 50,
"next_before_ts": 1234567890000
}
Forwards loading (с after_id):
{
"ok": true,
"messages": [...],
"has_more": false,
"has_more_after": true,
"next_after_id": 70,
"next_after_ts": 1234567890000
}
Следующие шаги:
- ✅ TestStandardLoading::test_load_latest_messages - ИСПРАВЛЕН
- ⏳ Исправить остальные тесты под реальный формат API
- ⏳ Обновить фикстуры для корректного создания тестовых данных
- ⏳ Добавить проверки has_more_before/has_more_after в зависимости от типа запроса
Команда для быстрого запуска:
cd backend
../.venv/Scripts/python -m pytest tests/test_bidirectional_chat_loading.py -v