Sha256: b9a5cc103455f0b2976b56c94df65480915e47dacc9cc54e8f1257328638148f

Contents?: true

Size: 1.4 KB

Versions: 8

Compression:

Stored size: 1.4 KB

Contents

# encoding: utf-8
require "spec_helper"

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

  context "with valid JSON body" do
    let(:body) { '{"data": {"type": "foo", "id": "bar", "attributes": {"baz": "qux"} }, "meta": {"api": "json api"} }' }
    let(:env) { { body: body } }

    it "parses body as json" do
      subject.on_complete(env)
      env.fetch(:body).tap do |json|
        expect(json[:data]).to eql(
          type: "foo",
          id: "bar",
          attributes: { baz: "qux" }
        )
        expect(json[:errors]).to eql([])
        expect(json[:metadata]).to eql(api: "json api")
      end
    end
  end

  context "with status code 204" do
    it "returns an empty body" do
      env = { status: 204 }
      subject.on_complete(env)
      env[:body].tap do |json|
        expect(json[:data]).to eq({})
      end
    end
  end

  context 'with status code 304' do
    it 'returns an empty body' do
      env = { :status => 304 }
      subject.on_complete(env)
      env[:body].tap do |json|
        expect(json[:data]).to eq({})
      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

8 entries across 8 versions & 1 rubygems

Version Path
her-0.10.4 spec/middleware/json_api_parser_spec.rb
her-0.10.3 spec/middleware/json_api_parser_spec.rb
her-0.10.2 spec/middleware/json_api_parser_spec.rb
her-1.0.1 spec/middleware/json_api_parser_spec.rb
her-1.0.0 spec/middleware/json_api_parser_spec.rb
her-0.10.1 spec/middleware/json_api_parser_spec.rb
her-0.10.0 spec/middleware/json_api_parser_spec.rb
her-0.9.0 spec/middleware/json_api_parser_spec.rb