Module: Ollama::Testing

Defined in:
lib/ollama/testing.rb

Overview

Testing support module for stubbing Ollama client responses in specs

Defined Under Namespace

Modules: ClientExtension

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.stubbed_responsesObject (readonly)

Returns the value of attribute stubbed_responses.



9
10
11
# File 'lib/ollama/testing.rb', line 9

def stubbed_responses
  @stubbed_responses
end

Class Method Details

.clear!Object



24
25
26
# File 'lib/ollama/testing.rb', line 24

def clear!
  @stubbed_responses = []
end

.enqueue_stub(type, data) ⇒ Object



11
12
13
14
# File 'lib/ollama/testing.rb', line 11

def enqueue_stub(type, data)
  @stubbed_responses ||= []
  @stubbed_responses << { type: type, data: data }
end

.pop_stub(type) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/ollama/testing.rb', line 16

def pop_stub(type)
  @stubbed_responses ||= []
  idx = @stubbed_responses.find_index { |s| s[:type] == type }
  return unless idx

  @stubbed_responses.delete_at(idx)[:data]
end

Instance Method Details

#clear_ollama_stubsObject



89
90
91
# File 'lib/ollama/testing.rb', line 89

def clear_ollama_stubs
  Ollama::Testing.clear!
end

#stub_ollama_chat(content:, model: nil, role: "assistant", done: true, done_reason: "stop", extra: {}) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/ollama/testing.rb', line 67

def stub_ollama_chat(content:, model: nil, role: "assistant", done: true, done_reason: "stop", extra: {})
  Ollama::Testing.enqueue_stub(:chat, {
    "model" => model || Ollama.config.model,
    "created_at" => Time.now.utc.iso8601,
    "message" => {
      "role" => role,
      "content" => content
    },
    "done" => done,
    "done_reason" => done_reason
  }.merge(stringify_keys(extra)))
end

#stub_ollama_generate(content:, model: nil, done: true, extra: {}) ⇒ Object



80
81
82
83
84
85
86
87
# File 'lib/ollama/testing.rb', line 80

def stub_ollama_generate(content:, model: nil, done: true, extra: {})
  Ollama::Testing.enqueue_stub(:generate, {
    "model" => model || Ollama.config.model,
    "created_at" => Time.now.utc.iso8601,
    "response" => content,
    "done" => done
  }.merge(stringify_keys(extra)))
end