diff --git a/lib/ruby_llm/providers/openrouter/chat.rb b/lib/ruby_llm/providers/openrouter/chat.rb index 0c3622bdf..6906d4380 100644 --- a/lib/ruby_llm/providers/openrouter/chat.rb +++ b/lib/ruby_llm/providers/openrouter/chat.rb @@ -52,7 +52,7 @@ def render_payload(messages, tools:, temperature:, model:, stream: false, schema def parse_completion_response(response) data = response.body - return if data.empty? + return if data.nil? || data.blank? raise Error.new(response, data.dig('error', 'message')) if data.dig('error', 'message') diff --git a/spec/ruby_llm/providers/open_router/chat_spec.rb b/spec/ruby_llm/providers/open_router/chat_spec.rb index be77c5f83..9f034716a 100644 --- a/spec/ruby_llm/providers/open_router/chat_spec.rb +++ b/spec/ruby_llm/providers/open_router/chat_spec.rb @@ -3,8 +3,9 @@ require 'spec_helper' RSpec.describe RubyLLM::Providers::OpenRouter::Chat do + let(:model) { instance_double(RubyLLM::Model::Info, id: 'anthropic/claude-haiku-4.5') } + describe '.render_payload' do - let(:model) { instance_double(RubyLLM::Model::Info, id: 'anthropic/claude-haiku-4.5') } let(:messages) { [RubyLLM::Message.new(role: :user, content: 'Hello')] } before do @@ -63,4 +64,12 @@ expect(payload[:response_format][:json_schema][:strict]).to be(false) end end + + describe '.parse_completion_response' do + let(:response) { instance_double(Faraday::Response, body: nil) } + + it "doesn't throw an error when response is nil" do + expect { described_class.parse_completion_response(response) }.not_to raise_error + end + end end