Sha256: beffa091aca534f0a714ec50b1457423fb18cedf2cdc3207391a04ccf3f1b701

Contents?: true

Size: 1.87 KB

Versions: 20

Compression:

Stored size: 1.87 KB

Contents

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

class FilterTest < Test::Unit::TestCase
  it "executes filters in the order defined" do
    count = 0
    mock_app do
      get('/') { 'Hello World' }
      before {
        assert_equal 0, count
        count = 1
      }
      before {
        assert_equal 1, count
        count = 2
      }
    end

    get '/'
    assert ok?
    assert_equal 2, count
    assert_equal 'Hello World', body
  end

  it "allows filters to modify the request" do
    mock_app {
      get('/foo') { 'foo' }
      get('/bar') { 'bar' }
      before { request.path_info = '/bar' }
    }

    get '/foo'
    assert ok?
    assert_equal 'bar', body
  end

  it "can modify instance variables available to routes" do
    mock_app {
      before { @foo = 'bar' }
      get('/foo') { @foo }
    }

    get '/foo'
    assert ok?
    assert_equal 'bar', body
  end

  it "allows redirects in filters" do
    mock_app {
      before { redirect '/bar' }
      get('/foo') do
        fail 'before block should have halted processing'
        'ORLY?!'
      end
    }

    get '/foo'
    assert redirect?
    assert_equal '/bar', response['Location']
    assert_equal '', body
  end

  it "does not modify the response with its return value" do
    mock_app {
      before { 'Hello World!' }
      get '/foo' do
        assert_equal [], response.body
        'cool'
      end
    }

    get '/foo'
    assert ok?
    assert_equal 'cool', body
  end

  it "does modify the response with halt" do
    mock_app {
      before { halt 302, 'Hi' }
      get '/foo' do
        "should not happen"
      end
    }

    get '/foo'
    assert_equal 302, response.status
    assert_equal 'Hi', body
  end

  it "gives you access to params" do
    mock_app {
      before { @foo = params['foo'] }
      get('/foo') { @foo }
    }

    get '/foo?foo=cool'
    assert ok?
    assert_equal 'cool', body
  end
end

Version data entries

20 entries across 20 versions & 4 rubygems

Version Path
sinatra-sinatra-0.10.0 test/filter_test.rb
sinatra-sinatra-0.9.1.3 test/filter_test.rb
sinatra-sinatra-0.9.2 test/filter_test.rb
sinatra-0.9.6 test/filter_test.rb
sinatra-0.9.5 test/filter_test.rb
akamai_bookmarklet-0.1.2 vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.13.1 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/filter_test.rb
akamai_bookmarklet-0.1.1 vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/filter_test.rb
akamai_bookmarklet-0.1.0 vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.12.2 lib/middleman/vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.12.1 lib/middleman/vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.12.0.pre3 lib/middleman/vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.12.0.pre2 lib/middleman/vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.12.0.pre lib/middleman/vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.10.17 vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.10.16 vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.10.15 vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
middleman-0.10.14 vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb
sinatra-0.9.4 test/filter_test.rb
sinatra-0.9.2 test/filter_test.rb