"""PRD §5.1 FRFA-AM031 — structured household verification findings."""
import pytest
from django.core.exceptions import ValidationError

from apps.rims.grants.services import build_household_verification_findings


_BASE = dict(
    guardian_name="Jane Doe",
    guardian_relationship="mother",
    income_band="low",
    asset_class="rents",
    dependents_count=3,
    guardian_consent=True,
    notes="home visit confirmed",
)


def test_household_verification_happy_path():
    out = build_household_verification_findings(**_BASE)
    assert out["schema"] == "household/v1"
    assert out["guardian_name"] == "Jane Doe"
    assert out["income_band"] == "low"
    assert out["asset_class"] == "rents"
    assert out["dependents_count"] == 3
    assert out["guardian_consent"] is True


@pytest.mark.parametrize(
    "field,bad_value",
    [
        ("guardian_name", "  "),
        ("guardian_relationship", ""),
        ("income_band", "very_high"),
        ("asset_class", "mansion"),
        ("dependents_count", -1),
    ],
)
def test_household_verification_rejects_invalid_inputs(field, bad_value):
    payload = dict(_BASE)
    payload[field] = bad_value
    with pytest.raises(ValidationError):
        build_household_verification_findings(**payload)


def test_household_verification_requires_consent():
    payload = dict(_BASE)
    payload["guardian_consent"] = False
    with pytest.raises(ValidationError):
        build_household_verification_findings(**payload)


def test_household_verification_non_integer_dependents():
    payload = dict(_BASE)
    payload["dependents_count"] = "many"
    with pytest.raises(ValidationError):
        build_household_verification_findings(**payload)
