Sha256: ca39d5704fc52006c495484d5d328cb730fb4dffbc766bd660acf8a41ea05d77

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

require 'test/spec'
require 'sinatra/base'
require 'sinatra/test'

describe 'Sinatra::Base' do
  include Sinatra::Test

  it 'includes Rack::Utils' do
    Sinatra::Base.should.include Rack::Utils
  end

  it 'can be used as a Rack application' do
    mock_app {
      get '/' do
        'Hello World'
      end
    }
    @app.should.respond_to :call

    request = Rack::MockRequest.new(@app)
    response = request.get('/')
    response.should.be.ok
    response.body.should.equal 'Hello World'
  end

  it 'can be used as Rack middleware' do
    app = lambda { |env| [200, {}, ['Goodbye World']] }
    mock_middleware =
      mock_app {
        get '/' do
          'Hello World'
        end
        get '/goodbye' do
          @app.call(request.env)
        end
      }
    middleware = mock_middleware.new(app)
    middleware.app.should.be app

    request = Rack::MockRequest.new(middleware)
    response = request.get('/')
    response.should.be.ok
    response.body.should.equal 'Hello World'

    response = request.get('/goodbye')
    response.should.be.ok
    response.body.should.equal 'Goodbye World'
  end

  it 'can take multiple definitions of a route' do
    app = mock_app {
      user_agent(/Foo/)
      get '/foo' do
        'foo'
      end

      get '/foo' do
        'not foo'
      end
    }

    request = Rack::MockRequest.new(app)
    response = request.get('/foo', 'HTTP_USER_AGENT' => 'Foo')
    response.should.be.ok
    response.body.should.equal 'foo'

    request = Rack::MockRequest.new(app)
    response = request.get('/foo')
    response.should.be.ok
    response.body.should.equal 'not foo'
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
adamwiggins-sinatra-0.8.9 test/base_test.rb
rtomayko-sinatra-0.8.9 test/base_test.rb