from __future__ import annotations

from contractor_metadata import contractor_from_row, tax_id


def test_tax_id_extracts_polish_nip() -> None:
    assert tax_id("NIP 123-456-32-18") == "1234563218"


def test_known_brand_from_path_and_preview() -> None:
    row = {"path": "2026.03/2026.03.17-windsurf-Invoice.pdf", "preview": "Invoice payment"}
    meta = contractor_from_row(row, "2026.03/2026.03.17-windsurf-Invoice.pdf")
    assert meta["contractor"] == "Windsurf"
    assert meta["platform"] == "ai-saas"
    assert meta["products_services"] == "AI coding assistant subscription"
    assert meta["confidence"] == "0.90"


def test_polish_supplier_marker_and_buyer() -> None:
    row = {
        "path": "x.pdf",
        "preview": "Faktura VAT Sprzedawca: SkyNova Krystian Mańczyna NIP 123-456-32-18 Nabywca: Tomasz Sapletta",
    }
    meta = contractor_from_row(row, "x.pdf")
    assert "SkyNova" in meta["contractor"]
    assert "Tomasz Sapletta" in meta["buyer"]
    assert meta["tax_id"] == "1234563218"


def test_generic_category_is_platform_not_contractor() -> None:
    row = {"path": "2026.03/2026.03.00-bank-finance-Potwierdzenie.pdf", "preview": "", "category": "bank-finance"}
    meta = contractor_from_row(row, "2026.03/2026.03.00-bank-finance-Potwierdzenie.pdf")
    assert meta["contractor"] == ""
    assert meta["platform"] == "bank-finance"


def test_product_from_ocr_marker() -> None:
    row = {"path": "x.pdf", "preview": "Invoice Description Monthly API subscription Qty 1 Total 20.00"}
    meta = contractor_from_row(row, "x.pdf")
    assert meta["products_services"] == "Monthly API subscription"
    assert meta["product_source"] == "ocr-marker"


def test_product_marker_rejects_address_fragments() -> None:
    row = {"path": "x.pdf", "preview": "Faktura Opis usługi Obrońców Szemuda 12, adres korespondencyjny"}
    meta = contractor_from_row(row, "x.pdf")
    assert meta["products_services"] == ""
    assert meta["product_source"] == ""
