"""task-2502 회귀: browser_verify import smoke.

회장 §7-3: shared 및 dev1~dev8 verifier 가 SSOT 를 ImportError 없이 import 가능한지 확인.
PR #47 partial merge 로 발생한 main ImportError 차단 회복 evidence.
"""
from __future__ import annotations

import importlib
import os as _os
import sys as _sys
from pathlib import Path

# 워크트리/메인 어느 환경이든 자신의 워크스페이스 루트를 sys.path[0]에 우선 등록.
_WROOT = _os.path.dirname(_os.path.dirname(_os.path.dirname(_os.path.abspath(__file__))))
if _WROOT in _sys.path:
    _sys.path.remove(_WROOT)
_sys.path.insert(0, _WROOT)

import pytest  # noqa: E402

WORKSPACE_ROOT = Path(_WROOT)


def test_task_id_parser_exports_legacy_validator():
    """SSOT 가 is_valid_task_id_with_legacy 를 export 한다."""
    mod = importlib.import_module("utils.task_id_parser")
    assert hasattr(mod, "is_valid_task_id_with_legacy"), (
        "utils.task_id_parser must export is_valid_task_id_with_legacy"
    )
    assert hasattr(mod, "TASK_ID_RE"), (
        "utils.task_id_parser must export TASK_ID_RE alias (shared verifier 호환)"
    )


def test_shared_browser_verify_imports_cleanly():
    """teams/shared/verifiers/browser_verify.py 가 ImportError 없이 import 가능."""
    shared_path = WORKSPACE_ROOT / "teams" / "shared" / "verifiers" / "browser_verify.py"
    if not shared_path.exists():
        pytest.skip(f"shared verifier 미존재: {shared_path}")
    mod = importlib.import_module("teams.shared.verifiers.browser_verify")
    assert hasattr(mod, "verify"), "browser_verify must expose verify()"


@pytest.mark.parametrize("module_path", [
    "teams.shared.verifiers.browser_verify",
    "teams.dev1.qc.verifiers.browser_verify",
    "teams.dev2.qc.verifiers.browser_verify",
    "teams.dev3.qc.verifiers.browser_verify",
    "teams.dev4.qc.verifiers.browser_verify",
    "teams.dev5.qc.verifiers.browser_verify",
    "teams.dev6.qc.verifiers.browser_verify",
    "teams.dev7.qc.verifiers.browser_verify",
    "teams.dev8.qc.verifiers.browser_verify",
])
def test_team_browser_verifiers_import_cleanly(module_path):
    """회장 §7-3: shared + dev1~dev8 9개 verifier 가 SSOT 를 ImportError 없이 import 가능."""
    target_path = WORKSPACE_ROOT / module_path.replace(".", "/")
    target_file = target_path.with_suffix(".py")
    if not target_file.exists():
        pytest.skip(f"verifier 미존재 (해당 worktree에만): {target_file}")
    mod = importlib.import_module(module_path)
    assert hasattr(mod, "verify"), f"{module_path} must expose verify()"
    assert callable(mod.verify), f"{module_path}.verify must be callable"


def test_legacy_validator_accepts_chairman_seven_two_cases():
    """회장 §7-2 4 케이스 (smoke) — 분리 회귀."""
    from utils.task_id_parser import is_valid_task_id_with_legacy  # type: ignore[import-not-found]
    assert is_valid_task_id_with_legacy("task-2485+1") is True
    assert is_valid_task_id_with_legacy("task-2487+1") is True
    assert is_valid_task_id_with_legacy("task-2494") is True
    assert is_valid_task_id_with_legacy("task-1234.1") is True
    assert is_valid_task_id_with_legacy("invalid-id") is False
