ExAthena.Providers.Mock (ExAthena v0.4.3)

Copy Markdown View Source

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)