Sha256: cc1534a39b7fd4224d3282a20910a72fdd4b6c62bf64661385b3a3129bbb38ae
Contents?: true
Size: 1.43 KB
Versions: 27
Compression:
Stored size: 1.43 KB
Contents
require 'spec_helper' RSpec.describe Shoryuken::Middleware::Chain do class CustomMiddleware def initialize(name, recorder) @name = name @recorder = recorder end def call(*_args) @recorder << [@name, 'before'] yield @recorder << [@name, 'after'] end end class CustomMiddlewareB < CustomMiddleware; end it 'supports custom middleware' do subject.add CustomMiddleware, 1, [] expect(CustomMiddleware).to eq subject.entries.last.klass end it 'can add middleware to the front of chain' do subject.prepend CustomMiddleware, 1, [] expect([CustomMiddleware]).to eq subject.entries.map(&:klass) subject.prepend CustomMiddlewareB, 1, [] expect([CustomMiddlewareB, CustomMiddleware]).to eq subject.entries.map(&:klass) end it 'invokes a middleware' do recorder = [] subject.add CustomMiddleware, 'custom', recorder final_action = nil subject.invoke { final_action = true } expect(final_action).to eq true expect(recorder).to eq [%w[custom before], %w[custom after]] end class NonYieldingMiddleware def call(*args); end end it 'allows middleware to abruptly stop processing rest of chain' do recorder = [] subject.add NonYieldingMiddleware subject.add CustomMiddleware, 'custom', recorder final_action = nil subject.invoke { final_action = true } expect(final_action).to eq nil expect(recorder).to eq [] end end
Version data entries
27 entries across 27 versions & 1 rubygems