Sha256: a06d2c4a82b92c9080a39d1ce66ea3dad84c9dce34f064d958063d42ea1b2cc8

Contents?: true

Size: 1.96 KB

Versions: 8

Compression:

Stored size: 1.96 KB

Contents

require_relative '../spec_helper'

module Barometer::Utils
  describe PayloadRequest do
    describe '#get' do
      let(:api) { double(:api, url: nil, params: nil, unwrap_nodes: [], current_query: nil) }
      let(:payload_request) { PayloadRequest.new(api) }

      before { Get.stub(call: double(content: '<foo></foo>', headers: {})) }

      it 'makes a GET request' do
        url = double(:url)
        params = double(:params)
        api.stub(url: url, params: params)

        payload_request.get

        expect( Get ).to have_received(:call).with(url, params)
      end

      it 'XML parses the GET response by default' do
        content = double(:content)
        Get.stub(call: double(content: content, headers: {}))
        unwrap_nodes = double(:unwrap_nodes)
        api.stub(unwrap_nodes: unwrap_nodes)
        XmlReader.stub(:parse)

        payload_request.get

        expect( XmlReader ).to have_received(:parse).with(content, unwrap_nodes)
      end

      it 'wraps the result as a payload' do
        expect( payload_request.get ).to be_a Payload
      end

      it 'stores the query used to make the request' do
        current_query = double(:query)
        api.stub(current_query: current_query)

        payload = payload_request.get

        expect( payload.query ).to eq current_query
      end

      context 'when the returned content type is */xml' do
        it 'uses the XmlReader' do
          Get.stub(call: double(content: '', headers: {'Content-Type' => 'text/xml'}))
          XmlReader.stub(:parse)

          payload_request.get

          expect( XmlReader ).to have_received(:parse)
        end
      end

      context 'when the returned content type is */json' do
        it 'uses the JsonReader' do
          Get.stub(call: double(content: '', headers: {'Content-Type' => 'application/json'}))
          JsonReader.stub(:parse)

          payload_request.get

          expect( JsonReader ).to have_received(:parse)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
barometer-0.9.7 spec/utils/payload_request_spec.rb
barometer-0.9.6 spec/utils/payload_request_spec.rb
barometer-0.9.5 spec/utils/payload_request_spec.rb
barometer-0.9.4 spec/utils/payload_request_spec.rb
barometer-0.9.3 spec/utils/payload_request_spec.rb
barometer-0.9.2 spec/utils/payload_request_spec.rb
barometer-0.9.1 spec/utils/payload_request_spec.rb
barometer-0.9.0 spec/utils/payload_request_spec.rb