#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Тестирование функционала рациона для AI-КАЛОРИЯ бота
"""

import os
import sys
from pathlib import Path
from datetime import datetime, timedelta

# Добавляем текущую директорию в путь
sys.path.insert(0, str(Path(__file__).parent))

def test_diet_functionality():
    """Тестирование функционала рациона"""
    print("🧪 Тестирование функционала рациона...")
    
    try:
        from database import DatabaseManager
        
        # Инициализируем базу данных
        db_manager = DatabaseManager()
        db_manager.init_database()
        
        # Тестовый пользователь
        test_user_id = 999999
        
        print(f"\n📊 Тестирование для пользователя {test_user_id}")
        
        # 1. Тест получения записей за дату
        print("\n1️⃣ Тест получения записей за дату")
        today = datetime.now().date()
        records = db_manager.get_user_records_by_date(test_user_id, today)
        print(f"   📅 Записей за сегодня: {len(records)}")
        
        # 2. Тест получения последних записей
        print("\n2️⃣ Тест получения последних записей")
        recent_records = db_manager.get_user_recent_records(test_user_id, limit=5)
        print(f"   📋 Последних записей: {len(recent_records)}")
        
        # 3. Тест получения записей за вчера
        print("\n3️⃣ Тест получения записей за вчера")
        yesterday = (datetime.now() - timedelta(days=1)).date()
        yesterday_records = db_manager.get_user_records_by_date(test_user_id, yesterday)
        print(f"   📅 Записей за вчера: {len(yesterday_records)}")
        
        # 4. Тест получения записей за неделю
        print("\n4️⃣ Тест получения записей за неделю")
        week_records = {}
        total_calories = 0
        
        for i in range(7):
            date = (datetime.now() - timedelta(days=i)).date()
            records = db_manager.get_user_records_by_date(test_user_id, date)
            if records:
                week_records[date] = records
                total_calories += sum(record['calories'] for record in records)
        
        print(f"   📊 Дней с записями: {len(week_records)}")
        print(f"   🔥 Всего калорий за неделю: {total_calories}")
        
        # 5. Тест удаления записи (если есть записи)
        if recent_records:
            print("\n5️⃣ Тест удаления записи")
            record_to_delete = recent_records[0]
            record_id = record_to_delete['id']
            
            print(f"   🗑️ Удаляем запись: {record_to_delete['food_name']}")
            success = db_manager.delete_food_record(record_id, test_user_id)
            print(f"   ✅ Результат удаления: {success}")
        else:
            print("\n5️⃣ Тест удаления записи - пропущен (нет записей)")
        
        return True
        
    except Exception as e:
        print(f"❌ Ошибка при тестировании: {e}")
        return False

def test_diet_commands():
    """Тестирование команд рациона"""
    print("\n🧪 Тестирование команд рациона...")
    
    commands = [
        "/diet - Главное меню рациона",
        "/stats - Статистика питания",
        "/clear - Очистка истории"
    ]
    
    print("📋 Доступные команды:")
    for cmd in commands:
        print(f"   {cmd}")
    
    print("\n🎯 Функционал рациона:")
    print("   📅 Просмотр рациона за разные дни")
    print("   📊 Статистика за неделю")
    print("   🗑️ Удаление отдельных записей")
    print("   🔙 Навигация по меню")
    
    return True

def main():
    """Основная функция тестирования"""
    print("🧪 Запуск тестов функционала рациона\n")
    
    success1 = test_diet_functionality()
    success2 = test_diet_commands()
    
    if success1 and success2:
        print("\n🎉 Тестирование завершено успешно!")
        print("\n💡 Новый функционал:")
        print("1. /diet - Просмотр рациона за разные дни")
        print("2. 📅 Сегодня/Вчера - Быстрый доступ")
        print("3. 📅 Выбрать дату - Выбор конкретной даты")
        print("4. 📊 За неделю - Статистика за 7 дней")
        print("5. 🗑️ Удалить запись - Удаление отдельных записей")
        print("6. 🔙 Навигация - Удобное перемещение по меню")
    else:
        print("\n⚠️ Тестирование завершено с ошибками")
    
    return 0 if (success1 and success2) else 1

if __name__ == '__main__':
    exit_code = main()
    sys.exit(exit_code)
