"""FRSME-MPL007 — Buyer registry entries are valid connection targets."""
from __future__ import annotations

import pytest
from django.contrib.auth import get_user_model
from django.http import Http404

from apps.core.permissions.roles import UserRole
from apps.smehub.linkage.views import _resolve_target
from apps.smehub.marketplace.models import BuyerRegistryEntry

User = get_user_model()
pytestmark = pytest.mark.django_db


@pytest.fixture
def admin():
    return User.objects.create_user(
        email="adm-bc@example.com", password="x",
        is_superuser=True, is_staff=True, role=UserRole.SYSTEM_ADMIN,
    )


@pytest.fixture
def buyer_user():
    return User.objects.create_user(email="buyer-bc@example.com", password="x", role=UserRole.BUYER)


@pytest.fixture
def pending_buyer(buyer_user):
    return BuyerRegistryEntry.objects.create(
        user=buyer_user,
        organisation_name="Pending Buyer Co",
        org_type=BuyerRegistryEntry.OrgType.WHOLESALE,
    )


def test_resolve_target_returns_pending_buyer(pending_buyer):
    """_resolve_target lookup doesn't filter by verification — the view
    layer enforces verified-only behaviour separately (see RequestConnectionView)."""
    target = _resolve_target("buyer", pending_buyer.pk)
    assert isinstance(target, BuyerRegistryEntry)
    assert target.pk == pending_buyer.pk


def test_resolve_target_buyer_404_on_missing():
    with pytest.raises(Http404):
        _resolve_target("buyer", 99999)


def test_resolve_target_unknown_kind_still_raises():
    with pytest.raises(Http404):
        _resolve_target("nonsense", 1)
