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

import os
import sys
import json
from pathlib import Path

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

# Загружаем переменные окружения
from dotenv import load_dotenv
load_dotenv()

def test_implicit_quantity():
    """Тестирование неявного количества"""
    print("🧪 Тестирование неявного количества...")
    
    try:
        from openai_client import OpenAIClient
        
        # Проверяем API ключ
        api_key = os.getenv('OPENAI_API_KEY')
        if not api_key:
            print("❌ OPENAI_API_KEY не установлен")
            return False
        
        client = OpenAIClient(api_key)
        
        # Тестовые случаи с неявным количеством
        test_cases = [
            "стаканчик мороженного",
            "порция салата", 
            "кусок пиццы",
            "тарелка супа",
            "стакан сока",
            "чашка кофе",
            "ложка меда",
            "Съел яблоко",  # Должен вернуть ошибку
            "Бутерброд с колбасой"  # Должен вернуть ошибку
        ]
        
        for test_text in test_cases:
            print(f"\n📝 Тестируем: '{test_text}'")
            result = client.analyze_food_intake(test_text)
            print(f"✅ Результат: {json.dumps(result, ensure_ascii=False, indent=2)}")
            
            if result.get('success'):
                print(f"   🍽️ {result['food_name']} - {result['amount']} {result['unit']} - {result['calories']} ккал")
            else:
                print(f"   ❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
        
        return True
        
    except Exception as e:
        print(f"❌ Ошибка при тестировании: {e}")
        return False

def main():
    """Основная функция тестирования"""
    print("🧪 Запуск тестов неявного количества\n")
    
    success = test_implicit_quantity()
    
    if success:
        print("\n🎉 Тестирование завершено!")
    else:
        print("\n⚠️ Тестирование завершено с ошибками")
    
    return 0 if success else 1

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