In-memory provider for tests.
Scripted responses either by canned text or by a user-supplied responder function. No external dependency — use in unit tests that want to exercise the agent loop / tool-call parsers without standing up a fake HTTP server.
Usage
Pass a scripted response per call:
ExAthena.query("ping", provider: :mock, mock: [text: "pong"])Or a responder function for dynamic behaviour:
responder = fn request ->
%ExAthena.Response{text: "echo: " <> hd(request.messages).content}
end
ExAthena.query("hi", provider: :mock, mock: [responder: responder])For streaming, supply a list of events under :mock_events:
events = [
%ExAthena.Streaming.Event{type: :text_delta, data: "Hello"},
%ExAthena.Streaming.Event{type: :text_delta, data: " world"},
%ExAthena.Streaming.Event{type: :stop, data: :stop}
]
ExAthena.stream("hi", fn _ -> :ok end,
provider: :mock,
mock: [text: "Hello world"],
mock_events: events)