"""
Unit Tests for Item Lifecycle & Field Discard Evaluation (Doc 63 SSoT)
======================================================================
Kiểm thử tính năng:
- Pre-identification triage (sàng lọc trước khi nhặt/giám định).
- Giám định dã chiến bằng Scroll of Wisdom ngay trong map.
- Thẩm định đồ vừa giám định: Vứt đồ rác (FIELD_DISCARD) để giải phóng ô trống, giữ đồ có giá trị (KEEP_IN_INVENTORY).
"""

import pytest
from src.agentic_engine.item_lifecycle import (
    ItemLifecycleManager,
    ItemIdentificationState,
    IdentificationChannel,
)
from src.agentic_engine.what_is_better import ItemStats


def test_field_identification_discard_junk_item():
    """Kiểm tra đồ rác sau khi giám định dã chiến bị đề xuất FIELD_DISCARD để tiết kiệm ô túi đồ."""
    lifecycle = ItemLifecycleManager()

    # Đồ rác: Không có chỉ số hữu ích, giá trị ước tính < 3c
    junk_stats = ItemStats(
        name="Rusty Spiked Fists",
        slot="gloves",
        max_life=0,
        estimated_trade_value_chaos=0.5
    )

    result = lifecycle.evaluate_field_identified_item(junk_stats, min_chaos_value=3.0)
    assert result["should_discard"] is True
    assert result["action"] == "FIELD_DISCARD"
    assert "vứt ngay ra đất" in result["reason"]


def test_field_identification_keep_valuable_item():
    """Kiểm tra đồ có giá trị sau khi giám định dã chiến được giữ lại (KEEP_IN_INVENTORY)."""
    lifecycle = ItemLifecycleManager()

    # Đồ giá trị: Găng tay máu cao, kháng tốt, giá trị 25c
    valuable_stats = ItemStats(
        name="Expert Spiked Fists",
        slot="gloves",
        max_life=80,
        fire_res=35,
        cold_res=35,
        estimated_trade_value_chaos=25.0
    )

    result = lifecycle.evaluate_field_identified_item(valuable_stats, min_chaos_value=3.0)
    assert result["should_discard"] is False
    assert result["action"] == "KEEP_IN_INVENTORY"
    assert "Giữ lại trong túi" in result["reason"]
