from __future__ import annotations

import json

from src.risk.tiny_live_policy import load_policy, validate_prepared_disabled_policy


def test_tracked_tiny_live_policy_is_valid_but_execution_disabled():
    policy = load_policy()
    result = validate_prepared_disabled_policy(policy)
    assert result.valid is True
    assert result.execution_enabled is False
    assert result.mainnet_signed_action_enabled is False
    assert result.strategy_id == "candidate_v77_trend_retest_anti_chase_long"
    assert result.strategy_version == "v77.1.0"


def test_policy_rejects_risk_or_execution_loosening(tmp_path):
    policy = load_policy()
    policy.update({"execution_enabled": True, "max_leverage": 2, "max_open_positions": 2, "max_equity_risk_per_trade_pct": 0.2})
    path = tmp_path / "policy.json"
    path.write_text(json.dumps(policy), encoding="utf-8")
    result = validate_prepared_disabled_policy(load_policy(path))
    assert result.valid is False
    assert "execution_not_disabled" in result.blockers
    assert "leverage_not_fixed_1x" in result.blockers
    assert "max_open_positions_not_one" in result.blockers
    assert "risk_per_trade_above_0_10pct" in result.blockers
