"""P1-2 읽기/쓰기 격리 테스트."""

import sys
import json
import os
import pytest
from pathlib import Path
from unittest.mock import patch, MagicMock

sys.path.insert(0, "/home/jay/workspace")

from scripts.worktree_manager import cmd_create


# TC-RW-01: read 에이전트 worktree 미생성 확인
def test_read_agent_no_worktree():
    result = cmd_create(
        project_path="/tmp/test-project",
        task_id="test-rw-001",
        team_id="dev1",
        read_only=True,
    )
    assert result["worktree_path"] is None
    assert result["status"] == "skipped"


# TC-RW-02: cmd_create read_only=False는 기존 동작 유지 확인
def test_write_agent_default_read_only_false():
    """read_only 기본값이 False인지 확인"""
    import inspect
    sig = inspect.signature(cmd_create)
    assert sig.parameters["read_only"].default is False


# TC-RW-03: 기본값 write 확인 (dispatch.py argparse)
def test_default_agent_type_is_write():
    """dispatch.py의 --agent-type 기본값이 write인지 확인"""
    # dispatch.py의 argparse를 직접 테스트
    from dispatch import dispatch
    import inspect
    sig = inspect.signature(dispatch)
    assert sig.parameters["agent_type"].default == "write"


# TC-RW-04: 플래그 비활성화 시 항상 write
def test_flag_disabled_always_write(tmp_path):
    """rw_isolation_enabled=false 시 agent_type=read여도 write로 동작"""
    flags_file = tmp_path / "feature_flags.json"
    data = {
        "schema_version": "1.0",
        "flags": {
            "rw_isolation_enabled": False,
        },
    }
    flags_file.write_text(json.dumps(data), encoding="utf-8")

    from utils.feature_flags import FeatureFlagLoader
    loader = FeatureFlagLoader(path=str(flags_file))
    assert loader.is_enabled("rw_isolation_enabled") is False
    # 플래그 비활성화 시 effective_agent_type은 항상 "write"
    agent_type = "read"
    if loader.is_enabled("rw_isolation_enabled"):
        effective = agent_type
    else:
        effective = "write"
    assert effective == "write"


# DIRECT-WORKFLOW.md 섹션 5 존재 확인
def test_workflow_section5_exists():
    workflow_path = "/home/jay/workspace/prompts/DIRECT-WORKFLOW.md"
    content = Path(workflow_path).read_text(encoding="utf-8")
    assert "섹션 5" in content
    assert "읽기/쓰기 에이전트 격리" in content
    assert "rw_isolation_enabled" in content
