Sha256: 50048400fe7ec7a381a5bd0b635fdcd41698fcfaef890cd5ff0fcb84d5c6faef

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

require 'sitehub/middleware'
class SiteHub
  describe Middleware do
    include_context :middleware_test

    subject do
      Object.new.tap do |o|
        o.extend(described_class)
      end
    end

    describe '#use' do
      it 'stores the middleware to be used by the forward proxies' do
        block = proc {}
        args = [:args]
        subject.use :middleware, *args, &block
        expect(subject.middlewares).to eq([[:middleware, args, block]])
      end
    end

    describe '#apply_middleware' do

      context 'middleware defined' do

        it 'wraps the supplied app in the middleware' do
          subject.use middleware
          result = subject.apply_middleware(:app)
          expect(result).to be_a(middleware)
          expect(result.app).to eq(:app)
        end

        it 'wraps the supplied app in the middleware in the order they were supplied' do
          middleware_1 = create_middleware
          middleware_2 = create_middleware
          subject.use middleware_1
          subject.use middleware_2

          result = subject.apply_middleware(:app)

          expect(result).to be_a(middleware_1)
          expect(result).to be_using(middleware_2)
        end

        context 'args supplied' do
          it 'passes the arg to the middleware' do
            subject.use middleware, :arg
            result = subject.apply_middleware(:app)
            expect(result.arg).to eq(:arg)
          end
        end

        context 'block supplied' do
          it 'passes the block to the middleware' do
            block_passed = false

            subject.use middleware do
              block_passed = true
            end

            subject.apply_middleware(:app)
            expect(block_passed).to be(true)
          end
        end

      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sitehub-0.4.2 spec/sitehub/middleware_spec.rb
sitehub-0.4.1 spec/sitehub/middleware_spec.rb