Sha256: f6db84f6fc697fedc264b75d891d4b4738444e9756ea29bc275537c2c6012d6b

Contents?: true

Size: 1.39 KB

Versions: 13

Compression:

Stored size: 1.39 KB

Contents

require 'spec_helper'

describe Freddy::SyncResponseContainer do
  let(:container) { described_class.new(on_timeout) }
  let(:on_timeout) { proc {} }

  context 'when timeout' do
    subject(:wait_for_response) { container.wait_for_response(0.01) }

    it 'raises timeout error' do
      expect { wait_for_response }.to raise_error do |error|
        expect(error).to be_a(Freddy::TimeoutError)
        expect(error.response).to eq(
          error: 'RequestTimeout',
          message: 'Timed out waiting for response'
        )
      end
    end
  end

  context 'when nil response' do
    let(:delivery) { {} }

    it 'raises timeout error' do
      expect do
        container.call(nil, delivery)
      end.to raise_error(StandardError, 'unexpected nil value for response')
    end
  end

  describe '#wait_for_response' do
    let(:timeout) { 2 }
    let(:response) { { msg: 'response' } }
    let(:delivery) { OpenStruct.new(type: 'success') }

    context 'when called after #call' do
      let(:max_wait_time_in_seconds) { 0.5 }

      before do
        container.call(response, delivery)
      end

      it 'returns response' do
        expect(container.wait_for_response(timeout)).to eq(response)
      end

      it 'does not wait for timeout' do
        expect do
          container.wait_for_response(timeout)
        end.to change(Time, :now).by_at_most(max_wait_time_in_seconds)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
freddy-2.4.0 spec/freddy/sync_response_container_spec.rb
freddy-2.3.0 spec/freddy/sync_response_container_spec.rb
freddy-2.2.4 spec/freddy/sync_response_container_spec.rb
freddy-2.2.3 spec/freddy/sync_response_container_spec.rb
freddy-2.2.2 spec/freddy/sync_response_container_spec.rb
freddy-2.2.1 spec/freddy/sync_response_container_spec.rb
freddy-2.2.0 spec/freddy/sync_response_container_spec.rb
freddy-2.1.0 spec/freddy/sync_response_container_spec.rb
freddy-2.0.0 spec/freddy/sync_response_container_spec.rb
freddy-1.7.0 spec/freddy/sync_response_container_spec.rb
freddy-1.6.0 spec/freddy/sync_response_container_spec.rb
freddy-1.5.0 spec/freddy/sync_response_container_spec.rb
freddy-1.4.2 spec/freddy/sync_response_container_spec.rb