from __future__ import annotations

import csv
from pathlib import Path

ROOT = Path(__file__).resolve().parents[2]
FIXTURES = ROOT / "tests" / "fixtures"


def test_synthetic_fixtures_load() -> None:
    required = [
        "accounts.csv",
        "instruments.csv",
        "transactions.csv",
        "crypto_wallets.csv",
        "crypto_holdings_initial.csv",
        "crypto_transactions.csv",
        "watchlist.csv",
        "cash_balances_initial.csv",
    ]
    for name in required:
        path = FIXTURES / name
        assert path.exists(), name
        with path.open(newline="", encoding="utf-8") as f:
            rows = list(csv.DictReader(f))
        assert rows, name


def test_no_fixture_contains_forbidden_real_markers() -> None:
    forbidden = ["github" + "_pat_", "gh" + "p_", "client" + "_secret", "api" + "_key", "wallet_address_real"]
    for path in FIXTURES.glob("*.csv"):
        text = path.read_text(encoding="utf-8", errors="ignore").lower()
        assert "demo" in text
        for marker in forbidden:
            assert marker.lower() not in text
