#!/usr/bin/env python3
"""
Тест функциональности пагинации записей
"""

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

from database import DatabaseManager

def test_pagination():
    """Тест функциональности пагинации"""
    print("🧪 Тестирование функциональности пагинации...")
    
    # Инициализируем базу данных
    db_manager = DatabaseManager()
    db_manager.init_database()
    
    # Создаем тестовые записи
    test_user_id = 999999
    test_records = [
        ("Тестовая запись 1", 100, "г", 150.0),
        ("Тестовая запись 2", 200, "г", 250.0),
        ("Тестовая запись 3", 300, "г", 350.0),
        ("Тестовая запись 4", 400, "г", 450.0),
        ("Тестовая запись 5", 500, "г", 550.0),
        ("Тестовая запись 6", 600, "г", 650.0),
        ("Тестовая запись 7", 700, "г", 750.0),
        ("Тестовая запись 8", 800, "г", 850.0),
        ("Тестовая запись 9", 900, "г", 950.0),
        ("Тестовая запись 10", 1000, "г", 1050.0),
        ("Тестовая запись 11", 1100, "г", 1150.0),
        ("Тестовая запись 12", 1200, "г", 1250.0),
    ]
    
    print("📝 Создаем тестовые записи...")
    record_ids = []
    for food_name, amount, unit, calories in test_records:
        record_id = db_manager.add_food_record(
            test_user_id,
            "test_user",
            food_name,
            amount,
            unit,
            calories
        )
        record_ids.append(record_id)
    
    print(f"✅ Создано {len(record_ids)} тестовых записей")
    
    # Тестируем пагинацию
    print("\n📄 Тест пагинации:")
    
    # Страница 1
    data1 = db_manager.get_user_records_paginated(test_user_id, page=1, per_page=5)
    print(f"   Страница 1: {len(data1['records'])} записей")
    print(f"   Всего страниц: {data1['pagination']['total_pages']}")
    print(f"   Есть следующая: {data1['pagination']['has_next']}")
    
    # Страница 2
    data2 = db_manager.get_user_records_paginated(test_user_id, page=2, per_page=5)
    print(f"   Страница 2: {len(data2['records'])} записей")
    print(f"   Есть предыдущая: {data2['pagination']['has_prev']}")
    print(f"   Есть следующая: {data2['pagination']['has_next']}")
    
    # Страница 3
    data3 = db_manager.get_user_records_paginated(test_user_id, page=3, per_page=5)
    print(f"   Страница 3: {len(data3['records'])} записей")
    print(f"   Есть предыдущая: {data3['pagination']['has_prev']}")
    print(f"   Есть следующая: {data3['pagination']['has_next']}")
    
    # Проверяем, что записи не дублируются
    all_records = set()
    for data in [data1, data2, data3]:
        for record in data['records']:
            all_records.add(record['id'])
    
    print(f"   Уникальных записей: {len(all_records)}")
    
    # Очищаем тестовые записи
    print("\n🗑️ Удаляем тестовые записи...")
    for record_id in record_ids:
        db_manager.delete_food_record(record_id, test_user_id)
    
    print("✅ Тестовые записи удалены")
    print("\n🎯 Тест пагинации завершен!")

if __name__ == "__main__":
    test_pagination()
