Sha256: 1ad60af2d7b0ef29ea6ff473f48656d34b7da86c8e5c677798d4b414ef5e31e4

Contents?: true

Size: 1.96 KB

Versions: 8

Compression:

Stored size: 1.96 KB

Contents

require 'spec_helper'

RSpec.describe WebValve::FakeService do
  subject do
    Class.new(described_class) do
      def self.name
        'FakeDummy'
      end

      get '/widgets' do
        json({ result: 'it works!' })
      end
    end
  end

  before do
    stub_const('FakeDummy', subject)
  end

  it 'is a Sinatra::Base' do
    expect(subject).to be < Sinatra::Base
  end

  describe 'integrated behavior' do
    after do
      WebValve.reset!
    end

    context 'when the service is at a root path' do
      it 'raise a useful error when an unmapped route is requested' do
        with_env 'DUMMY_API_URL' => 'http://dummy.dev' do
          WebValve.register subject.name
          WebValve.setup

          expect { Net::HTTP.get(URI('http://dummy.dev/foos')) }.to raise_error(RuntimeError, /route not defined for GET/)
        end
      end

      it 'returns the result from the fake when a mapped route is requested' do
        with_env 'DUMMY_API_URL' => 'http://dummy.dev' do
          WebValve.register subject.name
          WebValve.setup

          expect(Net::HTTP.get(URI('http://dummy.dev/widgets'))).to eq({ result: 'it works!' }.to_json)
        end
      end
    end

    context 'when the service lives at a non-root path' do
      it 'raise a useful error when the route is requested at the root' do
        with_env 'DUMMY_API_URL' => 'http://dummy.dev/gg' do
          WebValve.register subject.name
          WebValve.setup

          expect { Net::HTTP.get(URI('http://dummy.dev/widgets')) }
            .to raise_error(WebMock::NetConnectNotAllowedError, /Real HTTP connections are disabled/)
        end
      end

      it 'returns the result from the fake when a mapped route is requested' do
        with_env 'DUMMY_API_URL' => 'http://dummy.dev/gg' do
          WebValve.register subject.name
          WebValve.setup

          expect(Net::HTTP.get(URI('http://dummy.dev/gg/widgets'))).to eq({ result: 'it works!' }.to_json)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
webvalve-2.0.4 spec/webvalve/fake_service_spec.rb
webvalve-2.0.3 spec/webvalve/fake_service_spec.rb
webvalve-2.0.2 spec/webvalve/fake_service_spec.rb
webvalve-2.0.0 spec/webvalve/fake_service_spec.rb
webvalve-1.3.1 spec/webvalve/fake_service_spec.rb
webvalve-1.3.0 spec/webvalve/fake_service_spec.rb
webvalve-1.2.0 spec/webvalve/fake_service_spec.rb
webvalve-1.1.0 spec/webvalve/fake_service_spec.rb