"""Shared pytest fixtures for firecrawl-client tests."""

from __future__ import annotations

from collections.abc import Callable

import httpx
import pytest


@pytest.fixture
def make_mock_transport() -> Callable[..., httpx.MockTransport]:
    """Build an httpx MockTransport from a list of responses (in order)."""
    def _factory(*responses: httpx.Response) -> httpx.MockTransport:
        iter_responses = iter(responses)
        def handler(_request: httpx.Request) -> httpx.Response:
            return next(iter_responses)
        return httpx.MockTransport(handler)
    return _factory


@pytest.fixture
def mock_client(make_mock_transport):
    """httpx.Client backed by a MockTransport — pass `responses=[...]` to seed."""
    def _factory(*responses: httpx.Response) -> httpx.Client:
        return httpx.Client(transport=make_mock_transport(*responses))
    return _factory
