"""Old-system parity: legacy scholarships.EnumeratorHouseHoldSurvey and
ParentHomeValidationSurvey — structured detail behind HomeValidationRecord's
free-text key_findings summary.
"""
import datetime
import uuid

import pytest
from django.utils import timezone

from apps.rims.grants.models import (
    Application,
    GrantCall,
    HomeValidationEnumeratorDetail,
    HomeValidationParentDetail,
    HomeValidationRecord,
)


def _application(applicant_user, institution):
    call = GrantCall.objects.create(
        title="Scholarship home validation call",
        slug=f"hv-{uuid.uuid4().hex[:8]}",
        call_type=GrantCall.CallType.SCHOLARSHIP,
        opens_at=timezone.now(),
        closes_at=timezone.now() + datetime.timedelta(days=30),
        status=GrantCall.Status.PUBLISHED,
    )
    return Application.objects.create(call=call, applicant=applicant_user, institution=institution)


@pytest.mark.django_db
def test_enumerator_detail_attaches_to_record(applicant_user, institution, grants_manager_user):
    app = _application(applicant_user, institution)
    record = HomeValidationRecord.objects.create(
        application=app,
        conducted_by=grants_manager_user,
        visit_date=datetime.date.today(),
        key_findings="Modest household, subsistence farming.",
        recommendation=HomeValidationRecord.Recommendation.PASS,
    )
    detail = HomeValidationEnumeratorDetail.objects.create(
        record=record,
        disability=False,
        psychometric_test_completed=HomeValidationEnumeratorDetail.PsychometricTestCompletion.EASILY_COMPLETED,
        leadership_potential=8,
        overall_vulnerability=6,
        information_accuracy_confirmed=9,
    )
    assert record.enumerator_detail == detail
    assert detail.leadership_potential == 8


@pytest.mark.django_db
def test_parent_detail_attaches_to_record(applicant_user, institution, grants_manager_user):
    app = _application(applicant_user, institution)
    record = HomeValidationRecord.objects.create(
        application=app,
        conducted_by=grants_manager_user,
        visit_date=datetime.date.today(),
        key_findings="Parent interview conducted.",
        recommendation=HomeValidationRecord.Recommendation.BORDERLINE,
    )
    detail = HomeValidationParentDetail.objects.create(
        record=record,
        parent_full_name="Jane Guardian",
        relationship_to_applicant="mother",
        land_acreage=2.5,
        livestock_count=4,
        vulnerability_score=7,
        truthfulness_score=9,
    )
    assert record.parent_detail == detail
    assert detail.vulnerability_score == 7
