from __future__ import annotations

from firecrawl_client.models import ExtractResult, MapResult, ScrapeResult


def test_scrape_result_minimal_fields():
    r = ScrapeResult(markdown="# Hi", metadata={}, status_code=200)
    assert r.markdown == "# Hi"
    assert r.metadata == {}
    assert r.status_code == 200


def test_scrape_result_metadata_optional():
    r = ScrapeResult(markdown="x", metadata={"title": "Roma"}, status_code=200)
    assert r.metadata["title"] == "Roma"


def test_map_result_holds_domain_and_urls():
    r = MapResult(domain="roma.com", urls=["https://roma.com/a", "https://roma.com/b"])
    assert r.domain == "roma.com"
    assert len(r.urls) == 2


def test_map_result_empty_urls_allowed():
    r = MapResult(domain="roma.com", urls=[])
    assert r.urls == []


def test_extract_result_holds_data_and_sources():
    r = ExtractResult(
        data={"contacts": [{"name": "Anna", "email": "anna@roma.com"}]},
        sources=["https://roma.com/team"],
    )
    assert r.data["contacts"][0]["email"] == "anna@roma.com"
    assert r.sources == ["https://roma.com/team"]
