Sha256: 8453caecc67ad8a6dacef6aaad903e7c68f1cc891391a77a8419be261ceea990

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

require "spec_helper"

describe FooMapper do
  let (:connection) { instance_double(Faraday::Connection, :get => nil) }
  let (:context) do
    {
      :foo => :bar
    }
  end

  subject { described_class.new(connection, context) }

  describe "#data" do
    let (:expected_raw_data) do
      {
        :some => 'data'
      }
    end
    let (:expected_data) { JSON::generate(expected_raw_data, :symbolize_names => true) }
    let (:expected_response) { instance_double(Faraday::Response, :body => expected_data, :status => 200) }

    context "with a valid endpoint" do
      before(:each) do
        allow(connection).to receive(:get).with("/some/test/endpoint/#{context.values[0]}").and_return(expected_response)
      end

      specify { expect(subject.data).to eq expected_raw_data }
    end

    context "invalid hostname" do
      let (:expected_exception) { Alephant::Publisher::Request::ConnectionFailed }
      let (:faraday_exception) { Faraday::ConnectionFailed.new(StandardError) }

      before(:each) do
        allow(connection).to receive(:get).and_raise(faraday_exception)
      end

      specify { expect { subject.data }.to raise_error expected_exception }
    end

    context "invalid status code" do
      let (:status_code) { 503 }
      let (:expected_exception) { Alephant::Publisher::Request::InvalidApiStatus }
      before(:each) do
        allow(connection).to receive(:get).and_return(OpenStruct.new(:status => status_code))
      end

      specify { expect { subject.data }.to raise_error expected_exception }
    end


  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alephant-publisher-request-0.1.2 spec/data_mapper_spec.rb