from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]


def read(path: str) -> str:
    return (ROOT / path).read_text(encoding="utf-8")


def test_v485_bounce_ndr_is_ignored_without_task_or_opportunity():
    catalog = read("app/action_catalog.py")
    decider = read("app/action_decider.py")
    analyzer = read("app/analyzer.py")
    task_service = read("app/task_service.py")
    opportunity = read("app/opportunity_service.py")

    assert "IGNORE_BOUNCE" in catalog
    assert "Your message" in decider or "couldn" in decider
    assert "Recipient" in decider or "recipient" in decider
    assert "Office 365" in decider or "office 365" in decider
    assert 'action_result.action_code or "").upper() == "IGNORE_BOUNCE"' in analyzer
    assert 'return None' in task_service
    assert '"IGNORE_BOUNCE"' in opportunity
    assert "unknown to address" in opportunity


def test_v485_operations_identity_is_operator_friendly_and_details_are_conditional():
    vm = read("app/admin_ui/view_models/operations.py")
    ops = read("app/admin_ui/pages/operations.py")

    assert "operation_has_useful_details" in vm
    assert "Contacto sem identificação" in vm
    assert "_looks_like_generic_label" in vm
    assert "Contacto Chatwoot #" in vm  # legacy comment only, not the returned title
    assert "operation_has_useful_details(item)" not in ops
    assert 'status_chip_html = "" if status_text == "normal"' in ops


def test_v485_opportunity_cards_use_specific_cta_and_hide_low_value_fields():
    opportunities = read("app/admin_ui/pages/opportunities.py")

    assert "_opportunity_card_identity" in opportunities
    assert "_opportunity_card_next_action" in opportunities
    assert "primary_action_label" in opportunities
    assert "Ver tarefa pendente" in opportunities
    assert "cf-opportunity-card-compact" in opportunities
    compact_card = opportunities.split('def _render_opportunity_card', 1)[1].split('def render_opportunities_board_partial', 1)[0]
    assert "money_html(opp.get('value_amount'))" not in compact_card
    assert "fmt_dt(opp.get('updated_at'))" not in compact_card
    assert "pending_chip" not in compact_card
