#!/usr/bin/env python3
"""A40 推敲（Stage2/3）ワークフローのE2Eテスト

polish_manuscript_apply（dry_run）でアーティファクトが返ること、
restore_manuscript_from_artifact（dry_run）で差分が生成されることを確認。
"""

import pytest

from mcp_servers.noveler import main as mcp_mod


@pytest.mark.e2e
@pytest.mark.asyncio
async def test_polish_apply_and_restore_dry_run() -> None:
    # 1) Apply（dry_run）: 改稿・差分・レポートの参照IDが返る
    apply_args = {
        "episode_number": 1,
        "file_path": "temp/test_data/40_原稿/第001話_スモークテスト.md",
        "stages": ["stage2", "stage3"],
        "dry_run": True,
        "save_report": True,
    }
    apply_res = await mcp_mod.execute_polish_manuscript_apply(apply_args)
    assert isinstance(apply_res, dict) and apply_res.get("success"), "polish_manuscript_apply failed"
    meta = apply_res.get("metadata") or {}
    # メタデータにはtool_name が含まれる
    assert "tool_name" in meta, "tool metadata missing"

    # 実行結果に issues と score が含まれることを確認
    assert "issues" in apply_res, "issues field missing from polish result"
    assert "score" in apply_res, "score field missing from polish result"
    assert apply_res.get("execution_time_ms") is not None, "execution_time_ms missing"
