#!/usr/bin/env python3
"""
Тест исправления проблемы с дублированием сообщений
"""

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from telegram_bot import get_side_dishes_and_additions, create_side_dishes_keyboard, get_popular_food_variants, create_food_variants_keyboard

def test_callback_fix():
    """Тест исправления callback'ов"""
    print("🧪 Тестирование исправления callback'ов...")
    
    # Тестируем различные сценарии
    test_cases = [
        {
            'input': 'мясо',
            'expected_variants': True,
            'expected_sides': True
        },
        {
            'input': 'говядина',
            'expected_variants': False,
            'expected_sides': True
        },
        {
            'input': 'рыба',
            'expected_variants': False,
            'expected_sides': True
        },
        {
            'input': 'суп',
            'expected_variants': False,
            'expected_sides': True
        },
        {
            'input': 'овсянка',
            'expected_variants': False,
            'expected_sides': False
        }
    ]
    
    for case in test_cases:
        print(f"\n🍽️ Тестируем: {case['input']}")
        
        # Проверяем варианты продуктов
        variants = get_popular_food_variants(case['input'])
        variants_keyboard = create_food_variants_keyboard(case['input'])
        
        if case['expected_variants']:
            if variants_keyboard:
                print(f"   ✅ Варианты продуктов: {len(variants)} вариантов")
            else:
                print(f"   ❌ Ожидались варианты продуктов, но их нет")
        else:
            if not variants_keyboard:
                print(f"   ✅ Варианты продуктов не нужны (правильно)")
            else:
                print(f"   ❌ Не ожидались варианты продуктов, но они есть")
        
        # Проверяем гарниры
        side_dishes = get_side_dishes_and_additions(case['input'])
        sides_keyboard = create_side_dishes_keyboard(case['input'])
        
        if case['expected_sides']:
            if sides_keyboard:
                print(f"   ✅ Гарниры: {len(side_dishes)} вариантов")
            else:
                print(f"   ❌ Ожидались гарниры, но их нет")
        else:
            if not sides_keyboard:
                print(f"   ✅ Гарниры не нужны (правильно)")
            else:
                print(f"   ❌ Не ожидались гарниры, но они есть")
    
    print("\n🎯 Тест исправления завершен!")
    print("\n📝 Теперь бот должен:")
    print("   1. Показывать варианты продуктов только для общих названий (мясо, рыба)")
    print("   2. Показывать гарниры для конкретных блюд (говядина, суп)")
    print("   3. Не показывать лишние сообщения после выбора")

if __name__ == "__main__":
    test_callback_fix()
