"""
Test script for notification system.
"""
import requests
import json

BASE_URL = "http://localhost:8000"

def test_notifications():
    """Test notification endpoints."""
    
    # Login first
    print("1. Logging in...")
    login_response = requests.post(
        f"{BASE_URL}/auth/login",
        data={
            "username": "admin@example.com",
            "password": "admin123"
        }
    )
    
    if login_response.status_code != 200:
        print(f"❌ Login failed: {login_response.status_code}")
        print(login_response.text)
        return
    
    token = login_response.json()["access_token"]
    headers = {"Authorization": f"Bearer {token}"}
    print("✅ Login successful")
    
    # Get notifications
    print("\n2. Getting notifications...")
    notifications_response = requests.get(
        f"{BASE_URL}/notifications",
        headers=headers
    )
    
    if notifications_response.status_code == 200:
        notifications = notifications_response.json()
        print(f"✅ Got {len(notifications)} notifications")
        if notifications:
            print(f"   First notification: {notifications[0]['title']}")
    else:
        print(f"❌ Failed to get notifications: {notifications_response.status_code}")
        print(notifications_response.text)
    
    # Get notification stats
    print("\n3. Getting notification stats...")
    stats_response = requests.get(
        f"{BASE_URL}/notifications/stats",
        headers=headers
    )
    
    if stats_response.status_code == 200:
        stats = stats_response.json()
        print(f"✅ Stats: {stats['total']} total, {stats['unread']} unread")
    else:
        print(f"❌ Failed to get stats: {stats_response.status_code}")
    
    # Get notification preferences
    print("\n4. Getting notification preferences...")
    prefs_response = requests.get(
        f"{BASE_URL}/notifications/preferences",
        headers=headers
    )
    
    if prefs_response.status_code == 200:
        prefs = prefs_response.json()
        print(f"✅ Preferences loaded")
        print(f"   Email enabled: {prefs['email_enabled']}")
        print(f"   In-app enabled: {prefs['inapp_enabled']}")
    else:
        print(f"❌ Failed to get preferences: {prefs_response.status_code}")
    
    # Get recent activities
    print("\n5. Getting recent activities...")
    activities_response = requests.get(
        f"{BASE_URL}/activities/recent",
        headers=headers
    )
    
    if activities_response.status_code == 200:
        activities = activities_response.json()
        print(f"✅ Got {len(activities)} recent activities")
        if activities:
            print(f"   First activity: {activities[0]['description']}")
    else:
        print(f"❌ Failed to get activities: {activities_response.status_code}")
        print(activities_response.text)
    
    print("\n✅ All tests completed!")


if __name__ == "__main__":
    test_notifications()
