tmp commit
This commit is contained in:
14
.vscode/settings.json
vendored
Normal file
14
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"python.testing.pytestArgs": [
|
||||
"tests"
|
||||
],
|
||||
"python.testing.unittestEnabled": true,
|
||||
"python.testing.pytestEnabled": false,
|
||||
"python.testing.unittestArgs": [
|
||||
"-v",
|
||||
"-s",
|
||||
"./tests",
|
||||
"-p",
|
||||
"test_*.py"
|
||||
]
|
||||
}
|
||||
3
pytest.ini
Normal file
3
pytest.ini
Normal file
@@ -0,0 +1,3 @@
|
||||
[pytest]
|
||||
testpaths = tests
|
||||
python_files = test_*.py
|
||||
1
requirements-dev.txt
Normal file
1
requirements-dev.txt
Normal file
@@ -0,0 +1 @@
|
||||
pytest
|
||||
7
tests/mobile_api_example.sh
Normal file
7
tests/mobile_api_example.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Пример запроса к мобильному API календарного сервиса
|
||||
curl -v -X POST http://localhost:8004/api/v1/calendar/entries/mobile \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $(cat auth_token.txt)" \
|
||||
-d '{"date": "2025-09-26", "type": "MENSTRUATION", "flow_intensity": 3, "symptoms": ["CRAMPS", "HEADACHE"], "mood": "NORMAL", "notes": "Тестовая запись"}'
|
||||
139
tests/mobile_format_test.py
Executable file
139
tests/mobile_format_test.py
Executable file
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Скрипт для демонстрации преобразования данных мобильного формата в формат сервера.
|
||||
Показывает, как преобразовывать данные и какие поля ожидает сервер.
|
||||
"""
|
||||
|
||||
import json
|
||||
import requests
|
||||
from datetime import date, datetime
|
||||
|
||||
# Пример данных из мобильного приложения
|
||||
MOBILE_DATA_EXAMPLES = [
|
||||
{
|
||||
"date": "2025-09-26",
|
||||
"type": "MENSTRUATION",
|
||||
"flow_intensity": 3,
|
||||
"symptoms": ["CRAMPS", "HEADACHE"],
|
||||
"mood": "NORMAL",
|
||||
"notes": "Пример записи о менструации"
|
||||
},
|
||||
{
|
||||
"date": "2025-09-30",
|
||||
"type": "OVULATION",
|
||||
"symptoms": ["BREAST_TENDERNESS"],
|
||||
"mood": "HAPPY",
|
||||
"notes": "Пример записи об овуляции"
|
||||
},
|
||||
{
|
||||
"date": "2025-10-05",
|
||||
"type": "SPOTTING",
|
||||
"flow_intensity": 1,
|
||||
"symptoms": ["BLOATING"],
|
||||
"mood": "STRESSED",
|
||||
"notes": "Пример записи о выделениях"
|
||||
}
|
||||
]
|
||||
|
||||
def test_format_conversion(mobile_data):
|
||||
"""Тестирование преобразования формата данных"""
|
||||
url = "http://localhost:8004/debug/mobile-entry"
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
print(f"\nТестирование преобразования данных: {json.dumps(mobile_data, ensure_ascii=False)}")
|
||||
|
||||
try:
|
||||
response = requests.post(url, json=mobile_data, headers=headers)
|
||||
|
||||
if response.status_code == 200:
|
||||
result = response.json()
|
||||
|
||||
print("✅ Успешное преобразование данных")
|
||||
print("\nОригинальные данные (мобильный формат):")
|
||||
print(json.dumps(result["original_data"], ensure_ascii=False, indent=2))
|
||||
|
||||
print("\nПреобразованные данные (формат сервера):")
|
||||
print(json.dumps(result["transformed_data"], ensure_ascii=False, indent=2))
|
||||
|
||||
print("\nАнализ преобразования:")
|
||||
print(f"- Дата: {mobile_data['date']} -> {result['transformed_data']['entry_date']}")
|
||||
print(f"- Тип: {mobile_data['type']} -> {result['transformed_data']['entry_type']}")
|
||||
|
||||
if mobile_data.get('flow_intensity'):
|
||||
print(f"- Интенсивность: {mobile_data['flow_intensity']} -> {result['transformed_data']['flow_intensity']}")
|
||||
|
||||
if mobile_data.get('symptoms'):
|
||||
print(f"- Симптомы: {', '.join(mobile_data['symptoms'])} -> {result['transformed_data']['symptoms']}")
|
||||
|
||||
if mobile_data.get('mood'):
|
||||
print(f"- Настроение: {mobile_data['mood']} -> {result['transformed_data']['mood'] or 'Не задано'}")
|
||||
|
||||
return result
|
||||
else:
|
||||
print(f"❌ Ошибка: {response.status_code}")
|
||||
print(response.text)
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"❌ Исключение: {str(e)}")
|
||||
return None
|
||||
|
||||
def generate_documentation():
|
||||
"""Генерация документации по формату данных"""
|
||||
print("\n=== ДОКУМЕНТАЦИЯ ПО ФОРМАТУ ДАННЫХ ===\n")
|
||||
print("Мобильный формат данных должен соответствовать следующей схеме:")
|
||||
|
||||
schema = {
|
||||
"date": "string (формат YYYY-MM-DD, например '2025-09-26')",
|
||||
"type": "string (один из: MENSTRUATION, OVULATION, SPOTTING, DISCHARGE, PAIN, MOOD)",
|
||||
"flow_intensity": "integer (опционально, значения от 1 до 5)",
|
||||
"symptoms": "массив строк (опционально, например ['CRAMPS', 'HEADACHE'])",
|
||||
"mood": "string (опционально, одно из: HAPPY, SAD, NORMAL, STRESSED, ANXIOUS, IRRITATED)",
|
||||
"notes": "string (опционально, текстовые заметки)"
|
||||
}
|
||||
|
||||
print(json.dumps(schema, ensure_ascii=False, indent=2))
|
||||
|
||||
print("\nМаппинг между форматами:")
|
||||
|
||||
mapping = {
|
||||
"Типы записей": {
|
||||
"MENSTRUATION": "period",
|
||||
"OVULATION": "ovulation",
|
||||
"SPOTTING": "symptoms",
|
||||
"DISCHARGE": "symptoms",
|
||||
"PAIN": "symptoms",
|
||||
"MOOD": "mood"
|
||||
},
|
||||
"Интенсивность выделений": {
|
||||
"1": "light",
|
||||
"2": "light",
|
||||
"3": "medium",
|
||||
"4-5": "heavy"
|
||||
},
|
||||
"Настроение": {
|
||||
"HAPPY": "happy",
|
||||
"SAD": "sad",
|
||||
"NORMAL": "happy", # Маппится на happy
|
||||
"STRESSED": "anxious",
|
||||
"ANXIOUS": "anxious",
|
||||
"IRRITATED": "irritated"
|
||||
},
|
||||
"Симптомы": "Преобразуются из массива строк в строку с разделителями-запятыми"
|
||||
}
|
||||
|
||||
print(json.dumps(mapping, ensure_ascii=False, indent=2))
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("=== ТЕСТИРОВАНИЕ ПРЕОБРАЗОВАНИЯ ДАННЫХ МОБИЛЬНОГО ФОРМАТА ===\n")
|
||||
|
||||
for i, example in enumerate(MOBILE_DATA_EXAMPLES):
|
||||
print(f"\n--- Пример #{i+1} ---")
|
||||
test_format_conversion(example)
|
||||
|
||||
generate_documentation()
|
||||
|
||||
print("\n=== ТЕСТИРОВАНИЕ ЗАВЕРШЕНО ===")
|
||||
2
tests/test_hello_world.py
Normal file
2
tests/test_hello_world.py
Normal file
@@ -0,0 +1,2 @@
|
||||
def test_hello_world():
|
||||
assert 1 + 1 == 2
|
||||
Reference in New Issue
Block a user