Sha256: b27fc8664f9787d89a5c2c58f5f5b27f12f3b87f4d890b2f6ec78f63ab105dda

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

require 'rest_in_peace/response_converter'
require 'ostruct'

describe RESTinPeace::ResponseConverter do
  let(:element1) { { name: 'test1' } }
  let(:element2) { { name: 'test2' } }
  let(:response) { OpenStruct.new(body: response_body) }
  let(:converter) { RESTinPeace::ResponseConverter.new(response, klass) }

  describe '#result' do
    subject { converter.result }

    shared_examples_for 'an array input' do
      let(:response_body) { [element1, element2] }
      specify { expect(subject).to be_instance_of(Array) }
      specify { expect(subject).to eq([OpenStruct.new(name: 'test1'), OpenStruct.new(name: 'test2')]) }
    end

    shared_examples_for 'a hash input' do
      let(:response_body) { element1 }
      specify { expect(subject).to be_instance_of(OpenStruct) }
      specify { expect(subject).to eq(OpenStruct.new(name: 'test1')) }
    end

    context 'given type is a class' do
      let(:klass) { OpenStruct }
      context 'input is an array' do
        it_behaves_like 'an array input'
      end

      context 'input is a hash' do
        it_behaves_like 'a hash input'
      end
    end

    context 'given type is an instance' do
      let(:klass) { OpenStruct.new }
      context 'input is an array' do
        it_behaves_like 'an array input'
      end

      context 'input is a hash' do
        it_behaves_like 'a hash input'
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rest-in-peace-1.3.0 spec/rest_in_peace/response_converter_spec.rb
rest-in-peace-1.2.1 spec/rest_in_peace/response_converter_spec.rb
rest-in-peace-1.2.0 spec/rest_in_peace/response_converter_spec.rb
rest-in-peace-1.1.1 spec/rest_in_peace/response_converter_spec.rb
rest-in-peace-1.1.0 spec/rest_in_peace/response_converter_spec.rb
rest-in-peace-1.0.0 spec/rest_in_peace/response_converter_spec.rb