Sha256: 4558611431265add7ebc56d1abd55bd0b39344d8daa29b8ffd97d48f17aab904

Contents?: true

Size: 1.6 KB

Versions: 13

Compression:

Stored size: 1.6 KB

Contents

require 'spec_helper'

RSpec.describe RSolr::Error do
  def generate_error_with_backtrace(request, response)
    raise RSolr::Error::Http.new request, response
  rescue RSolr::Error::Http => exception
    exception
  end
  let (:response_lines) { (1..15).to_a.map { |i| "line #{i}" } }
  let(:request)  { double :[] => "mocked" }
  let(:response_body) { response_lines.join("\n") }
  let(:response) {{
    :body   => response_body,
    :status => 400
  }}
  subject { generate_error_with_backtrace(request, response).to_s }

  context "when the response body is wrapped in a <pre> element" do
    let(:response_body) { "<pre>" + response_lines.join("\n") + "</pre>" }

    it "only shows the first eleven lines of the response" do
      expect(subject).to match(/line 1\n.+line 11\n\n/m)
    end

    context "when the response is one line long" do
      let(:response_body) { "<pre>failed</pre>" }
      it { should match(/Error: failed/) }
    end
  end

  context "when the response body is not wrapped in a <pre> element" do

    it "only shows the first eleven lines of the response" do
      expect(subject).to match(/line 1\n.+line 11\n\n/m)
    end

    context "when the response is one line long" do
      let(:response_body) { 'failed' }
      it { should match(/Error: failed/) }
    end
    context "when the response body contains a msg key" do
      let(:msg) { "'org.apache.solr.search.SyntaxError: Cannot parse \\':false\\': Encountered \" \":\" \": \"\" at line 1, column 0.'" }
      let(:response_body) { (response_lines << "'error'=>{'msg'=> #{msg}").join("\n") }
      it { should include msg }
    end
  end
end

Version data entries

13 entries across 13 versions & 3 rubygems

Version Path
rsolr-2.3.0 spec/api/error_spec.rb
telvue-rsolr-2.2.2 spec/api/error_spec.rb
rsolr-2.2.1 spec/api/error_spec.rb
rsolr-2.2.0 spec/api/error_spec.rb
rsolr-2.1.0 spec/api/error_spec.rb
rsolr-2.0.2 spec/api/error_spec.rb
rsolr-2.0.1 spec/api/error_spec.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/rsolr-2.0.0/spec/api/error_spec.rb
rsolr-2.0.0 spec/api/error_spec.rb
rsolr-2.0.0.rc1 spec/api/error_spec.rb
rsolr-2.0.0.pre3 spec/api/error_spec.rb
rsolr-2.0.0.pre2 spec/api/error_spec.rb
rsolr-2.0.0.pre1 spec/api/error_spec.rb