Sha256: 89b2a16ce965559c4db8e0e02f1370f975f4db4316df94dbf7c91fe214d22e2c

Contents?: true

Size: 1.01 KB

Versions: 12

Compression:

Stored size: 1.01 KB

Contents

# encoding: utf-8
require "spec_helper"

describe Her::Middleware::SecondLevelParseJSON do
  subject { described_class.new }

  context "with valid JSON body" do
    let(:body) { "{\"data\": 1, \"errors\": 2, \"metadata\": 3}" }
    it "parses body as json" do
      subject.parse(body).tap do |json|
        expect(json[:data]).to eq(1)
        expect(json[:errors]).to eq(2)
        expect(json[:metadata]).to eq(3)
      end
    end

    it "parses :body key as json in the env hash" do
      env = { body: body }
      subject.on_complete(env)
      env[:body].tap do |json|
        expect(json[:data]).to eq(1)
        expect(json[:errors]).to eq(2)
        expect(json[:metadata]).to eq(3)
      end
    end
  end

  context "with invalid JSON body" do
    let(:body) { '"foo"' }
    it "ensures that invalid JSON throws an exception" do
      expect { subject.parse(body) }.to raise_error(Her::Errors::ParseError, 'Response from the API must behave like a Hash or an Array (last JSON response was "\"foo\"")')
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
her-0.10.4 spec/middleware/second_level_parse_json_spec.rb
her-0.10.3 spec/middleware/second_level_parse_json_spec.rb
her-0.10.2 spec/middleware/second_level_parse_json_spec.rb
her-1.0.1 spec/middleware/second_level_parse_json_spec.rb
her-1.0.0 spec/middleware/second_level_parse_json_spec.rb
her-0.10.1 spec/middleware/second_level_parse_json_spec.rb
her-0.10.0 spec/middleware/second_level_parse_json_spec.rb
her-0.9.0 spec/middleware/second_level_parse_json_spec.rb
her-0.8.6 spec/middleware/second_level_parse_json_spec.rb
her-0.8.5 spec/middleware/second_level_parse_json_spec.rb
her-0.8.4 spec/middleware/second_level_parse_json_spec.rb
her-0.8.3 spec/middleware/second_level_parse_json_spec.rb