Sha256: b6a79653e418e6f719ce86bd883f2e625660a67008fd1e599c5ae16a971508ff

Contents?: true

Size: 991 Bytes

Versions: 7

Compression:

Stored size: 991 Bytes

Contents

RSpec.describe Evil::Client::Middleware do
  before do
    class Test::Bar
      def initialize(app)
        @app = app
      end

      def call(env)
        @app.call(env) << " bar"
      end
    end

    class Test::Baz
      def initialize(app)
        @app = app
      end

      def call(env)
        @app.call(env) << " baz"
      end
    end
  end

  let(:connection) do
    double(:connection).tap do |conn|
      allow(conn).to receive(:call) { |value| value << " foo" }
    end
  end

  let(:middleware) do
    described_class.new do |settings|
      run Test::Baz if settings.baz
      run Test::Bar
    end
  end

  it "builds full stack parameterized by settings" do
    settings = double baz: false
    response = middleware.finalize(settings).call(connection).call("qux")
    expect(response).to eq "qux foo bar"

    settings = double baz: true
    response = middleware.finalize(settings).call(connection).call("qux")
    expect(response).to eq "qux foo bar baz"
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
evil-client-0.3.3 spec/unit/evil/client/middleware_spec.rb
evil-client-0.3.2 spec/unit/evil/client/middleware_spec.rb
evil-client-0.3.1 spec/unit/evil/client/middleware_spec.rb
evil-client-0.3.0 spec/unit/evil/client/middleware_spec.rb
evil-client-0.2.3 spec/unit/evil/client/middleware_spec.rb
evil-client-0.2.2 spec/unit/evil/client/middleware_spec.rb
evil-client-0.2.1 spec/unit/evil/client/middleware_spec.rb