#!/usr/bin/env python3
"""
Тестирование запланированных постов
"""
import asyncio
import aiohttp
from datetime import datetime, timedelta, timezone
import sys
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))

from config import WEB_ADMIN_LOGIN, WEB_ADMIN_PASSWORD

async def test_scheduled_posts():
    """Тест создание запланированного поста"""
    
    # Базовый URL веб-панели
    base_url = "http://localhost:8000"
    
    # Данные для аутентификации из конфига
    auth = aiohttp.BasicAuth(WEB_ADMIN_LOGIN, WEB_ADMIN_PASSWORD)
    
    print(f"🔐 Используем логин: {WEB_ADMIN_LOGIN}")
    
    # Время через 2 минуты от сейчас
    scheduled_time = datetime.now(timezone.utc) + timedelta(minutes=2)
    
    # Тест 1: Создание поста
    print("\n📅 Тест 1: Создание запланированного поста...")
    
    form_data = aiohttp.FormData()
    form_data.add_field('text', '<b>🗑️ Юмор про мусор #1</b>\n\n<i>Почему мусорный бак всегда полон? Потому что у него нет проблемы с переполнением! 😂</i>')
    form_data.add_field('topic_name', 'memes')
    form_data.add_field('recipients', 'chat_only')
    form_data.add_field('scheduled_time', scheduled_time.isoformat())
    
    try:
        async with aiohttp.ClientSession() as session:
            async with session.post(
                f"{base_url}/api/scheduled_posts/create",
                auth=auth,
                data=form_data
            ) as resp:
                result = await resp.json()
                print(f"Ответ: {result}")
                
                if result.get('success'):
                    print(f"✅ Пост создан! ID: {result.get('post_id')}")
                else:
                    print(f"❌ Ошибка: {result.get('error')}")
                    return
    
    except Exception as e:
        print(f"❌ Ошибка запроса: {e}")
        return
    
    # Тест 2: Получение списка постов
    print("\n📋 Тест 2: Получение списка постов...")
    
    try:
        async with aiohttp.ClientSession() as session:
            async with session.get(
                f"{base_url}/api/scheduled_posts/list",
                auth=auth
            ) as resp:
                result = await resp.json()
                print(f"Найдено постов: {len(result.get('posts', []))}")
                
                for post in result.get('posts', []):
                    print(f"  - ID {post['id']}: {post['topic_name']} в {post['scheduled_time']} [{post['status']}]")
    
    except Exception as e:
        print(f"❌ Ошибка запроса: {e}")
        return
    
    print("\n✅ Тесты завершены!")
    print(f"⏳ Подожди 2 минуты и проверь что пост опубликовался автоматически!")
    print(f"📱 Тебе придёт уведомление в Telegram когда пост будет опубликован!")

if __name__ == '__main__':
    asyncio.run(test_scheduled_posts())
