# retoor <retoor@molodetz.nl>

from uuid import uuid4
from datetime import datetime, timezone
from tests.conftest import BASE_URL
from devplacepy.database import get_table
from devplacepy.utils import make_combined_slug
def seed_admin_news(count=3):
    news_table = get_table("news")
    news_table.delete()
    for i in range(count):
        eid = f"admin_test_news_{i}"
        if news_table.find_one(external_id=eid):
            continue
        uid = str(uuid4())
        title = f"Admin News Article {i}"
        slug = make_combined_slug(title, uid)
        news_table.insert(
            {
                "deleted_at": None,
                "deleted_by": None,
                "uid": uid,
                "slug": slug,
                "title": title,
                "external_id": eid,
                "grade": 5 + i,
                "status": "draft" if i == 0 else "published",
                "show_on_landing": 1 if i == 1 else 0,
                "source_name": "AdminTest",
                "synced_at": datetime.now(timezone.utc).isoformat(),
                "description": f"Test article {i} for admin tests.",
            }
        )
def seed_extra_users(count=30):
    users = get_table("users")
    existing_count = len(list(users.all()))
    if existing_count > 5:
        return
    for i in range(count):
        uid = str(uuid4())
        users.insert(
            {
                "uid": uid,
                "username": f"pagu_{i:04d}",
                "terms_version": "1",
                "email": f"pagu{i:04d}@test.devplace",
                "password_hash": "x",
                "role": "Member",
                "is_active": True,
                "created_at": datetime.now(timezone.utc).isoformat(),
            }
        )
def _seed_target_user():
    uid = str(uuid4())
    get_table("users").insert(
        {
            "uid": uid,
            "username": f"target_{uid[:8]}",
            "terms_version": "1",
            "email": f"target_{uid[:8]}@test.devplace",
            "password_hash": "x",
            "role": "Member",
            "is_active": True,
            "created_at": datetime.now(timezone.utc).isoformat(),
        }
    )
    return uid


def test_admin_analytics_page(alice):
    page, _ = alice
    resp = page.request.get(f"{BASE_URL}/admin/analytics")
    assert resp.status == 200
    data = resp.json()
    assert "total_members" in data
    assert "totals" in data
    assert "posts" in data["totals"]
