Sha256: 2e77933bf7fc0cd8d2535065b2fbdae0e75badab8d9296d983476186a418e637

Contents?: true

Size: 1.89 KB

Versions: 2

Compression:

Stored size: 1.89 KB

Contents

require File.dirname(__FILE__) + '/helper'

describe 'Sinatra::Base' do
  it 'includes Rack::Utils' do
    assert Sinatra::Base.included_modules.include?(Rack::Utils)
  end

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

    request = Rack::MockRequest.new(@app)
    response = request.get('/')
    assert response.ok?
    assert_equal 'Hello World', response.body
  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)
    assert_same app, middleware.app

    request = Rack::MockRequest.new(middleware)
    response = request.get('/')
    assert response.ok?
    assert_equal 'Hello World', response.body

    response = request.get('/goodbye')
    assert response.ok?
    assert_equal 'Goodbye World', response.body
  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')
    assert response.ok?
    assert_equal 'foo', response.body

    request = Rack::MockRequest.new(app)
    response = request.get('/foo')
    assert response.ok?
    assert_equal 'not foo', response.body
  end

  it "makes redirecting back pretty" do
    app = mock_app {
      get '/foo' do
        redirect back
      end
    }

    request  = Rack::MockRequest.new(app)
    response = request.get('/foo', 'HTTP_REFERER' => 'http://github.com')
    assert response.redirect?
    assert_equal "http://github.com", response.location
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
bmizerany-sinatra-0.9.0.5 test/base_test.rb
sinatra-sinatra-0.9.0.5 test/base_test.rb