Class: Riffer::Providers::Mock

Inherits:
Base
  • Object
show all
Defined in:
lib/riffer/providers/mock.rb

Overview

Mock provider for mocking LLM responses in tests; no external gems required.

Constant Summary

Constants inherited from Base

Base::WIRE_SEPARATOR

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#generate_text, #stream_text

Constructor Details

#initialize(**options) ⇒ Mock

responses: pre-configures canned responses (same shape as #stub_response), typically set via provider_options responses: […].

Riffer::Providers::Mock.new(responses: [
  {content: "", tool_calls: [{name: "tool_a", arguments: "{}"}]},
  {content: "Final answer"}
])

– : (**untyped) -> void



32
33
34
35
36
37
# File 'lib/riffer/providers/mock.rb', line 32

def initialize(**options)
  @responses = (options[:responses] || []).map { |r| normalize_response(r) }
  @current_index = 0
  @calls = []
  @stubbed_responses = []
end

Instance Attribute Details

#callsObject (readonly)

Array of recorded method calls for assertions.



20
21
22
# File 'lib/riffer/providers/mock.rb', line 20

def calls
  @calls
end

Class Method Details

.skills_adapter(model = nil) ⇒ Object

Returns the skill adapter for the mock model — XML when the model name contains claude (mirroring a real Claude provider), else Markdown. – : (?String?) -> singleton(Riffer::Skills::Adapter)



14
15
16
17
# File 'lib/riffer/providers/mock.rb', line 14

def self.skills_adapter(model = nil)
  return Riffer::Skills::XmlAdapter if model&.include?("claude")
  Riffer::Skills::MarkdownAdapter
end

Instance Method Details

#clear_stubsObject

Clears all stubbed responses.

– : () -> void



55
56
57
# File 'lib/riffer/providers/mock.rb', line 55

def clear_stubs
  @stubbed_responses = []
end

#stub_response(content, tool_calls: [], token_usage: nil) ⇒ Object

Stubs the next response; call repeatedly to queue several.

provider.stub_response("Hello")
provider.stub_response("", tool_calls: [{name: "my_tool", arguments: '{"key":"value"}'}])
provider.stub_response("Final response", token_usage: Riffer::Providers::TokenUsage.new(input_tokens: 10, output_tokens: 5))

– : (String, ?tool_calls: Array[Hash[Symbol, untyped]], ?token_usage: Riffer::Providers::TokenUsage?) -> void



47
48
49
# File 'lib/riffer/providers/mock.rb', line 47

def stub_response(content, tool_calls: [], token_usage: nil)
  @stubbed_responses << normalize_response(content: content, tool_calls: tool_calls, token_usage: token_usage)
end