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