"""Test del mapeo Scweet -> Tweet (sin red, sin cookie).

Ejecuta:  .venv/bin/python test_scweet.py
"""

from agent.providers.scweet_provider import ScweetProvider, _parse_ts, _to_int, row_to_tweet
from agent.registry import get_provider


def main():
    assert isinstance(get_provider("scweet", {}), ScweetProvider)
    print("registry OK")

    assert _to_int(1234) == 1234
    assert _to_int("1,234") == 1234
    assert _to_int("1.2K") == 1200
    assert _to_int("3.4M") == 3_400_000
    assert _to_int(None) == 0
    print("_to_int OK")

    assert _parse_ts("2026-06-22T07:33:00.000Z").year == 2026
    assert _parse_ts("Tue Jan 24 20:14:18 +0000 2023").year == 2023
    assert _parse_ts(1750000000).year == 2025
    print("_parse_ts OK")

    row = {
        "tweet_id": "123", "timestamp": "2026-06-22T07:33:00.000Z",
        "text": "Hello AI world", "likes": "1.2K", "retweets": 340,
        "comments": "56", "user": {"screen_name": "karpathy", "name": "Andrej"},
        "tweet_url": "https://x.com/karpathy/status/123",
        "raw": {"quote_count": 12, "view_count": "50K"},
    }
    t = row_to_tweet(row, "karpathy")
    assert t.id == "123" and t.author == "karpathy", t
    assert t.likes == 1200 and t.retweets == 340 and t.replies == 56, t
    assert t.quotes == 12 and t.views == 50000, t
    assert t.text == "Hello AI world" and t.created_at.year == 2026
    print(f"mapeo (user dict) OK -> ❤{t.likes} 🔁{t.retweets} 💬{t.replies} ❝{t.quotes} 👁{t.views}")

    row2 = {"tweet_id": "9", "timestamp": "Tue Jan 24 20:14:18 +0000 2023",
            "text": "hi", "likes": 5, "retweets": 1, "comments": 0, "user": "@simonw"}
    t2 = row_to_tweet(row2, "fallback")
    assert t2.author == "simonw" and t2.quotes == 0 and t2.views == 0
    print("mapeo (user str) OK")

    assert row_to_tweet({"tweet_id": "1", "text": "x"}, "h") is None
    print("descarta sin timestamp OK")

    print("\nSCWEET_MAP_OK")


if __name__ == "__main__":
    main()
