spec/bearcat/api_array_spec.rb in bearcat-1.3.52 vs spec/bearcat/api_array_spec.rb in bearcat-1.3.53

- old
+ new

@@ -1,11 +1,13 @@ require 'helper' describe Bearcat::ApiArray do + let(:api_client) { double } + let(:response_body) { @response_body || [] } + let(:original_response) { double(body: response_body, status: 200, headers: {}, env: {}) } + describe 'get_page' do - let(:api_client) { double } - let(:original_response) { double(body: [], status: 200, headers: {}, env: {}) } let(:api_array) { described_class.process_response(original_response, api_client) } let(:connection) { double } let(:request) { double } before :each do @@ -48,8 +50,32 @@ it 'does not set the per_page parameter if it is already set' do api_array.instance_variable_set('@page_count', 50) expect(request).to receive(:url).with('https://fake.com', 'per_page' => 10) api_array.send(:get_page, 'https://fake.com?', 'per_page' => 10) + end + end + + context 'makes returned values indifferent' do + it 'makes a Hash response indifferent' do + @response_body = { something: 1 } + result = described_class.process_response(original_response, api_client) + expect(result[:something]).to eq 1 + expect(result['something']).to eq 1 + end + + it 'makes an Array response indifferent' do + @response_body = [{ something: 1 }] + result = described_class.process_response(original_response, api_client) + expect(result[0][:something]).to eq 1 + expect(result[0]['something']).to eq 1 + end + + it 'makes a single-key Hash response indifferent' do + @response_body = { 'something' => [ { foo: 1 } ] } + allow(described_class).to receive(:array_key).and_return('something') + result = described_class.process_response(original_response, api_client) + expect(result[0][:foo]).to eq 1 + expect(result[0]['foo']).to eq 1 end end end