Sha256: b333f050bbd6283f7768af0fdc8005ec327c000476e4a80f4907d50e23b0001f

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

require 'spec_helper'
require 'commute/core/context'
require 'commute/core/stack'

describe Commute::Stack do

  let(:stack) { Commute::Stack.new }

  # A Layer that forwards to the next.
  let(:forward_layer) { proc { |router, request, options = {}|
    request.pipe router.call(request.http) { |response, status|
      response.pipe request.respond(response.http, status)
    }
  }}

  # A layer that echoes all data.
  let(:echo_layer) { proc { |router, request, options = {}|
    request.pipe request.respond(Commute::Http::Response.new(request), Commute::Status.ok)
  }}

  describe '#call' do
    describe 'with a forward and echo layer' do
      it 'should echo all data' do
        # Append a forward and echo layer to the main sequence.
        stack.sequence do |s|
          s.append forward_layer
          s.append forward_layer
          s.append stack.sequence(:echo)
        end
        stack.sequence(:echo) do |s|
          s.append echo_layer
        end
        # Call the stack.
        context = Commute::Context.new stack
        request = stack.call Commute::Http::Request.new(context) do |response, status|
          puts 'response!'
          response.on(:data) { |chunk| puts chunk }
          response.on(:end) { puts 'end!'}
        end
        request.write 1
        request.write 2
        request.end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
commute-0.3.0.pre.2 spec/commute/core/stack_spec.rb
commute-0.3.0.pre spec/commute/core/stack_spec.rb