This commit is contained in:
112
tests/test_mobile_calendar_endpoint.py
Executable file
112
tests/test_mobile_calendar_endpoint.py
Executable file
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env python3
|
||||
import requests
|
||||
import json
|
||||
import sys
|
||||
|
||||
def test_mobile_calendar_entry_creation():
|
||||
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyOSIsImVtYWlsIjoidGVzdDJAZXhhbXBsZS5jb20iLCJleHAiOjE3NTg4NjQwMzV9.Ap4ZD5EtwhLXRtm6KjuFvXMlk6XA-3HtMbaGEu9jX6M"
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": f"Bearer {token}"
|
||||
}
|
||||
|
||||
# Используем правильный порт для упрощенного сервиса
|
||||
base_url = "http://localhost:8888"
|
||||
|
||||
# Тестовые данные для мобильного приложения - нужно преобразовать в стандартный формат,
|
||||
# так как в упрощенном сервисе нет поддержки мобильного формата
|
||||
# Преобразуем формат с "date" -> "entry_date", "type" -> "entry_type" и т.д.
|
||||
mobile_data = {
|
||||
"entry_date": "2025-09-26",
|
||||
"entry_type": "period", # преобразуем MENSTRUATION в period
|
||||
"flow_intensity": "heavy", # преобразуем 5 в heavy
|
||||
"mood": "happy", # преобразуем HAPPY в happy
|
||||
"symptoms": "fatigue", # преобразуем массив в строку
|
||||
"notes": "Тестовая запись из мобильного приложения",
|
||||
"period_symptoms": "",
|
||||
"energy_level": 3,
|
||||
"sleep_hours": 8,
|
||||
"medications": ""
|
||||
}
|
||||
|
||||
# Тестируем эндпоинт /api/v1/calendar/entries
|
||||
print("\n1. Тестирование /api/v1/calendar/entries (стандартный формат)")
|
||||
url_mobile = f"{base_url}/api/v1/calendar/entries"
|
||||
try:
|
||||
response = requests.post(url_mobile, headers=headers, json=mobile_data)
|
||||
print(f"Статус ответа: {response.status_code}")
|
||||
print(f"Текст ответа: {response.text}")
|
||||
|
||||
if response.status_code == 201:
|
||||
print("✅ Тест успешно пройден! Запись календаря создана через /api/v1/calendar/entry")
|
||||
mobile_success = True
|
||||
else:
|
||||
print(f"❌ Тест не пройден. Код ответа: {response.status_code}")
|
||||
mobile_success = False
|
||||
except Exception as e:
|
||||
print(f"❌ Ошибка при выполнении запроса: {str(e)}")
|
||||
mobile_success = False
|
||||
|
||||
# Тестируем с другими данными в стандартном формате
|
||||
print("\n2. Тестирование /api/v1/calendar/entries с другими данными")
|
||||
standard_data = {
|
||||
"entry_date": "2025-09-30",
|
||||
"entry_type": "period",
|
||||
"flow_intensity": "medium",
|
||||
"notes": "Тестовая запись в стандартном формате",
|
||||
"period_symptoms": "",
|
||||
"energy_level": 2,
|
||||
"sleep_hours": 7,
|
||||
"medications": "",
|
||||
"symptoms": "headache"
|
||||
}
|
||||
|
||||
url_standard = f"{base_url}/api/v1/calendar/entries"
|
||||
try:
|
||||
response = requests.post(url_standard, headers=headers, json=standard_data)
|
||||
print(f"Статус ответа: {response.status_code}")
|
||||
print(f"Текст ответа: {response.text}")
|
||||
|
||||
if response.status_code == 201:
|
||||
print("✅ Тест успешно пройден! Запись календаря создана через /api/v1/entries")
|
||||
standard_success = True
|
||||
else:
|
||||
print(f"❌ Тест не пройден. Код ответа: {response.status_code}")
|
||||
standard_success = False
|
||||
except Exception as e:
|
||||
print(f"❌ Ошибка при выполнении запроса: {str(e)}")
|
||||
standard_success = False
|
||||
|
||||
# Проверяем список записей
|
||||
print("\n3. Тестирование GET /api/v1/calendar/entries")
|
||||
url_entry = f"{base_url}/api/v1/calendar/entries"
|
||||
try:
|
||||
response = requests.get(url_entry, headers=headers)
|
||||
print(f"Статус ответа: {response.status_code}")
|
||||
|
||||
if response.status_code == 200:
|
||||
entries = response.json()
|
||||
print(f"Количество записей: {len(entries)}")
|
||||
for i, entry in enumerate(entries):
|
||||
print(f"Запись {i+1}: ID={entry['id']}, Дата={entry['entry_date']}, Тип={entry['entry_type']}")
|
||||
print("✅ Тест успешно пройден! Получен список записей календаря")
|
||||
entry_success = True
|
||||
else:
|
||||
print(f"❌ Тест не пройден. Код ответа: {response.status_code}")
|
||||
print(f"Текст ответа: {response.text}")
|
||||
entry_success = False
|
||||
except Exception as e:
|
||||
print(f"❌ Ошибка при выполнении запроса: {str(e)}")
|
||||
entry_success = False
|
||||
|
||||
# Суммарный результат всех тестов
|
||||
if mobile_success and standard_success and entry_success:
|
||||
print("\n✅ Все тесты успешно пройдены!")
|
||||
return 0
|
||||
else:
|
||||
print("\n❌ Некоторые тесты не пройдены.")
|
||||
return 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(test_mobile_calendar_entry_creation())
|
||||
Reference in New Issue
Block a user