import sys
import unittest
from pathlib import Path

SCRIPT_DIR = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(SCRIPT_DIR))

from same_side_replacement_shadow import parse_line  # noqa: E402


class SameSideReplacementShadowTest(unittest.TestCase):
    def test_parse_enriched_entry_block(self):
        line = (
            "2026-08-03 12:00:00,000 - x - INFO - entry_blocked "
            "reason=same_side_limit pair=EDGE/USDT:USDT side=short "
            "occupied=BTC/USDT:USDT#1,ETH/USDT:USDT#2 "
            'candidate={"adx":34.0,"breakout_atr":0.2} '
            'occupied_state=[{"current_r":-0.2,"pair":"BTC/USDT:USDT","trade_id":1}] '
            'replacement_shadow={"eligible":true,"reason":"shadow_replace","weakest":{"trade_id":1}}'
        )
        row = parse_line(line)
        self.assertIsNotNone(row)
        self.assertEqual(row["pair"], "EDGE/USDT:USDT")
        self.assertTrue(row["shadow"]["eligible"])


if __name__ == "__main__":
    unittest.main()
