diff --git a/test/base_test.rb b/test/base_test.rb index b5dc4ad7..14fccf00 100644 --- a/test/base_test.rb +++ b/test/base_test.rb @@ -7,9 +7,7 @@ class BaseTest < Test::Unit::TestCase describe 'Sinatra::Base subclasses' do class TestApp < Sinatra::Base - get '/' do - 'Hello World' - end + get('/') { 'Hello World' } end it 'include Rack::Utils' do @@ -99,9 +97,7 @@ class BaseTest < Test::Unit::TestCase super end - get '/' do - 'Hello from middleware' - end + get('/') { 'Hello from middleware' } end middleware = TestMiddleware.new(app) @@ -125,9 +121,7 @@ class BaseTest < Test::Unit::TestCase end class TestMiddleware < Sinatra::Base - get '/low-level-forward' do - app.call(env) - end + get('/low-level-forward') { app.call(env) } end it 'can call the downstream app directly and return result' do diff --git a/test/builder_test.rb b/test/builder_test.rb index 2450e813..65744d13 100644 --- a/test/builder_test.rb +++ b/test/builder_test.rb @@ -5,11 +5,11 @@ require 'builder' class BuilderTest < Test::Unit::TestCase def builder_app(options = {}, &block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' set options - get '/', &block - } + get('/', &block) + end get '/' end @@ -43,49 +43,45 @@ class BuilderTest < Test::Unit::TestCase end it 'renders inline blocks' do - builder_app { + builder_app do @name = "Frank & Mary" - builder do |xml| - xml.couple @name - end - } + builder { |xml| xml.couple @name } + end assert ok? assert_equal "Frank & Mary\n", body end it 'renders .builder files in views path' do - builder_app { + builder_app do @name = "Blue" builder :hello - } + end assert ok? assert_equal %(You're my boy, Blue!\n), body end it "renders with inline layouts" do - mock_app { - layout do - %(xml.layout { xml << yield }) - end + mock_app do + layout { %(xml.layout { xml << yield }) } get('/') { builder %(xml.em 'Hello World') } - } + end get '/' assert ok? assert_equal "\nHello World\n\n", body end it "renders with file layouts" do - builder_app { + builder_app do builder %(xml.em 'Hello World'), :layout => :layout2 - } + end assert ok? assert_equal "\nHello World\n\n", body end it "raises error if template not found" do - mock_app { + mock_app do get('/') { builder :no_such_template } - } + end assert_raise(Errno::ENOENT) { get('/') } end end diff --git a/test/coffee_test.rb b/test/coffee_test.rb index b87d23f5..98dea32b 100644 --- a/test/coffee_test.rb +++ b/test/coffee_test.rb @@ -12,11 +12,11 @@ end class CoffeeTest < Test::Unit::TestCase def coffee_app(options = {}, &block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' set(options) - get '/', &block - } + get('/', &block) + end get '/' end @@ -77,9 +77,7 @@ class CoffeeTest < Test::Unit::TestCase it "passes default coffee options to the coffee engine" do mock_app do set :coffee, :no_wrap => true # default coffee style is :nested - get '/' do - coffee "alert 'Aye!'\n" - end + get('/') { coffee "alert 'Aye!'\n" } end get '/' assert ok? diff --git a/test/creole_test.rb b/test/creole_test.rb index 6de3ccb1..1a51e2b0 100644 --- a/test/creole_test.rb +++ b/test/creole_test.rb @@ -7,7 +7,7 @@ class CreoleTest < Test::Unit::TestCase def creole_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -40,7 +40,9 @@ class CreoleTest < Test::Unit::TestCase end it "renders with file layouts" do - creole_app { creole 'Hello World', :layout => :layout2, :layout_engine => :erb } + creole_app do + creole 'Hello World', :layout => :layout2, :layout_engine => :erb + end assert ok? assert_body "ERB Layout!\n

Hello World

" end @@ -49,9 +51,7 @@ class CreoleTest < Test::Unit::TestCase mock_app do template(:inner) { "hi" } template(:outer) { "<%= creole :inner %>" } - get '/' do - erb :outer - end + get('/') { erb :outer } end get '/' diff --git a/test/delegator_test.rb b/test/delegator_test.rb index 25eb6e8a..0566fbad 100644 --- a/test/delegator_test.rb +++ b/test/delegator_test.rb @@ -63,9 +63,7 @@ class DelegatorTest < Test::Unit::TestCase %w[get put post delete options patch].each do |verb| it "delegates #{verb} correctly" do delegation_app do - send verb, '/hello' do - 'Hello World' - end + send(verb, '/hello') { 'Hello World' } end request = Rack::MockRequest.new(@app) diff --git a/test/erb_test.rb b/test/erb_test.rb index c0b5cbad..75d932de 100644 --- a/test/erb_test.rb +++ b/test/erb_test.rb @@ -11,10 +11,10 @@ class ERBTest < Test::Unit::TestCase end def erb_app(&block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } + get('/', &block) + end get '/' end @@ -35,57 +35,51 @@ class ERBTest < Test::Unit::TestCase end it 'takes a :locals option' do - erb_app { + erb_app do locals = {:foo => 'Bar'} erb '<%= foo %>', :locals => locals - } + end assert ok? assert_equal 'Bar', body end it "renders with inline layouts" do - mock_app { + mock_app do layout { 'THIS. IS. <%= yield.upcase %>!' } get('/') { erb 'Sparta' } - } + end get '/' assert ok? assert_equal 'THIS. IS. SPARTA!', body end it "renders with file layouts" do - erb_app { - erb 'Hello World', :layout => :layout2 - } + erb_app { erb 'Hello World', :layout => :layout2 } assert ok? assert_body "ERB Layout!\nHello World" end it "renders erb with blocks" do - mock_app { + mock_app do def container @_out_buf << "THIS." yield @_out_buf << "SPARTA!" end def is; "IS." end - get '/' do - erb '<% container do %> <%= is %> <% end %>' - end - } + get('/') { erb '<% container do %> <%= is %> <% end %>' } + end get '/' assert ok? assert_equal 'THIS. IS. SPARTA!', body end it "can be used in a nested fashion for partials and whatnot" do - mock_app { + mock_app do template(:inner) { "<%= 'hi' %>" } template(:outer) { "<%= erb :inner %>" } - get '/' do - erb :outer - end - } + get('/') { erb :outer } + end get '/' assert ok? diff --git a/test/extensions_test.rb b/test/extensions_test.rb index 739c33e5..a423f8f6 100644 --- a/test/extensions_test.rb +++ b/test/extensions_test.rb @@ -42,9 +42,7 @@ class ExtensionsTest < Test::Unit::TestCase end it 'allows extending by passing a block' do - Sinatra::Base.register { - def im_in_ur_anonymous_module; end - } + Sinatra::Base.register { def im_in_ur_anonymous_module; end } assert Sinatra::Base.respond_to?(:im_in_ur_anonymous_module) end diff --git a/test/filter_test.rb b/test/filter_test.rb index 534fd5ff..f3db9826 100644 --- a/test/filter_test.rb +++ b/test/filter_test.rb @@ -5,14 +5,14 @@ class BeforeFilterTest < Test::Unit::TestCase count = 0 mock_app do get('/') { 'Hello World' } - before { + before do assert_equal 0, count count = 1 - } - before { + end + before do assert_equal 1, count count = 2 - } + end end get '/' @@ -22,11 +22,11 @@ class BeforeFilterTest < Test::Unit::TestCase end it "can modify the request" do - mock_app { + mock_app do get('/foo') { 'foo' } get('/bar') { 'bar' } before { request.path_info = '/bar' } - } + end get '/foo' assert ok? @@ -34,10 +34,10 @@ class BeforeFilterTest < Test::Unit::TestCase end it "can modify instance variables available to routes" do - mock_app { + mock_app do before { @foo = 'bar' } get('/foo') { @foo } - } + end get '/foo' assert ok? @@ -45,13 +45,13 @@ class BeforeFilterTest < Test::Unit::TestCase end it "allows redirects" do - mock_app { + mock_app do before { redirect '/bar' } get('/foo') do fail 'before block should have halted processing' 'ORLY?!' end - } + end get '/foo' assert redirect? @@ -60,13 +60,13 @@ class BeforeFilterTest < Test::Unit::TestCase end it "does not modify the response with its return value" do - mock_app { + mock_app do before { 'Hello World!' } - get '/foo' do + get('/foo') do assert_equal [], response.body 'cool' end - } + end get '/foo' assert ok? @@ -74,12 +74,12 @@ class BeforeFilterTest < Test::Unit::TestCase end it "does modify the response with halt" do - mock_app { + mock_app do before { halt 302, 'Hi' } get '/foo' do "should not happen" end - } + end get '/foo' assert_equal 302, response.status @@ -87,10 +87,10 @@ class BeforeFilterTest < Test::Unit::TestCase end it "gives you access to params" do - mock_app { + mock_app do before { @foo = params['foo'] } get('/foo') { @foo } - } + end get '/foo?foo=cool' assert ok? @@ -98,10 +98,10 @@ class BeforeFilterTest < Test::Unit::TestCase end it "properly unescapes parameters" do - mock_app { + mock_app do before { @foo = params['foo'] } get('/foo') { @foo } - } + end get '/foo?foo=bar%3Abaz%2Fbend' assert ok? @@ -112,9 +112,7 @@ class BeforeFilterTest < Test::Unit::TestCase base = Class.new(Sinatra::Base) base.before { @foo = 'hello from superclass' } - mock_app(base) { - get('/foo') { @foo } - } + mock_app(base) { get('/foo') { @foo } } get '/foo' assert_equal 'hello from superclass', body @@ -122,11 +120,11 @@ class BeforeFilterTest < Test::Unit::TestCase it 'does not run before filter when serving static files' do ran_filter = false - mock_app { + mock_app do before { ran_filter = true } set :static, true set :public_folder, File.dirname(__FILE__) - } + end get "/#{File.basename(__FILE__)}" assert ok? assert_equal File.read(__FILE__), body @@ -176,14 +174,14 @@ class AfterFilterTest < Test::Unit::TestCase count = 0 mock_app do get('/') { 'Hello World' } - after { + after do assert_equal 0, count count = 1 - } - after { + end + after do assert_equal 1, count count = 2 - } + end end get '/' @@ -193,10 +191,10 @@ class AfterFilterTest < Test::Unit::TestCase end it "allows redirects" do - mock_app { + mock_app do get('/foo') { 'ORLY' } after { redirect '/bar' } - } + end get '/foo' assert redirect? @@ -205,10 +203,10 @@ class AfterFilterTest < Test::Unit::TestCase end it "does not modify the response with its return value" do - mock_app { + mock_app do get('/foo') { 'cool' } after { 'Hello World!' } - } + end get '/foo' assert ok? @@ -216,12 +214,12 @@ class AfterFilterTest < Test::Unit::TestCase end it "does modify the response with halt" do - mock_app { + mock_app do get '/foo' do "should not be returned" end after { halt 302, 'Hi' } - } + end get '/foo' assert_equal 302, response.status @@ -245,11 +243,11 @@ class AfterFilterTest < Test::Unit::TestCase it 'does not run after filter when serving static files' do ran_filter = false - mock_app { + mock_app do after { ran_filter = true } set :static, true set :public_folder, File.dirname(__FILE__) - } + end get "/#{File.basename(__FILE__)}" assert ok? assert_equal File.read(__FILE__), body @@ -308,9 +306,9 @@ class AfterFilterTest < Test::Unit::TestCase before(:host_name => 'example.com') { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_HOST' => 'example.org' } + get('/', {}, { 'HTTP_HOST' => 'example.org' }) assert !ran - get '/', {}, { 'HTTP_HOST' => 'example.com' } + get('/', {}, { 'HTTP_HOST' => 'example.com' }) assert ran end @@ -320,11 +318,11 @@ class AfterFilterTest < Test::Unit::TestCase before('/foo', :host_name => 'example.com') { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_HOST' => 'example.com' } + get('/', {}, { 'HTTP_HOST' => 'example.com' }) assert !ran - get '/foo', {}, { 'HTTP_HOST' => 'example.org' } + get('/foo', {}, { 'HTTP_HOST' => 'example.org' }) assert !ran - get '/foo', {}, { 'HTTP_HOST' => 'example.com' } + get('/foo', {}, { 'HTTP_HOST' => 'example.com' }) assert ran end @@ -334,9 +332,9 @@ class AfterFilterTest < Test::Unit::TestCase after(:host_name => 'example.com') { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_HOST' => 'example.org' } + get('/', {}, { 'HTTP_HOST' => 'example.org' }) assert !ran - get '/', {}, { 'HTTP_HOST' => 'example.com' } + get('/', {}, { 'HTTP_HOST' => 'example.com' }) assert ran end @@ -346,11 +344,11 @@ class AfterFilterTest < Test::Unit::TestCase after('/foo', :host_name => 'example.com') { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_HOST' => 'example.com' } + get('/', {}, { 'HTTP_HOST' => 'example.com' }) assert !ran - get '/foo', {}, { 'HTTP_HOST' => 'example.org' } + get('/foo', {}, { 'HTTP_HOST' => 'example.org' }) assert !ran - get '/foo', {}, { 'HTTP_HOST' => 'example.com' } + get('/foo', {}, { 'HTTP_HOST' => 'example.com' }) assert ran end @@ -360,9 +358,9 @@ class AfterFilterTest < Test::Unit::TestCase before(:user_agent => /foo/) { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_USER_AGENT' => 'bar' } + get('/', {}, { 'HTTP_USER_AGENT' => 'bar' }) assert !ran - get '/', {}, { 'HTTP_USER_AGENT' => 'foo' } + get('/', {}, { 'HTTP_USER_AGENT' => 'foo' }) assert ran end @@ -372,11 +370,11 @@ class AfterFilterTest < Test::Unit::TestCase before('/foo', :user_agent => /foo/) { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_USER_AGENT' => 'foo' } + get('/', {}, { 'HTTP_USER_AGENT' => 'foo' }) assert !ran - get '/foo', {}, { 'HTTP_USER_AGENT' => 'bar' } + get('/foo', {}, { 'HTTP_USER_AGENT' => 'bar' }) assert !ran - get '/foo', {}, { 'HTTP_USER_AGENT' => 'foo' } + get('/foo', {}, { 'HTTP_USER_AGENT' => 'foo' }) assert ran end @@ -406,9 +404,9 @@ class AfterFilterTest < Test::Unit::TestCase after(:user_agent => /foo/) { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_USER_AGENT' => 'bar' } + get('/', {}, { 'HTTP_USER_AGENT' => 'bar' }) assert !ran - get '/', {}, { 'HTTP_USER_AGENT' => 'foo' } + get('/', {}, { 'HTTP_USER_AGENT' => 'foo' }) assert ran end @@ -418,11 +416,11 @@ class AfterFilterTest < Test::Unit::TestCase after('/foo', :user_agent => /foo/) { ran = true } get('/') { 'welcome' } end - get '/', {}, { 'HTTP_USER_AGENT' => 'foo' } + get('/', {}, { 'HTTP_USER_AGENT' => 'foo' }) assert !ran - get '/foo', {}, { 'HTTP_USER_AGENT' => 'bar' } + get('/foo', {}, { 'HTTP_USER_AGENT' => 'bar' }) assert !ran - get '/foo', {}, { 'HTTP_USER_AGENT' => 'foo' } + get('/foo', {}, { 'HTTP_USER_AGENT' => 'foo' }) assert ran end @@ -433,7 +431,7 @@ class AfterFilterTest < Test::Unit::TestCase get('/') { @type } end - get '/', {}, { 'HTTP_ACCEPT' => '*' } + get('/', {}, { 'HTTP_ACCEPT' => '*' }) assert_body 'txt' end end diff --git a/test/haml_test.rb b/test/haml_test.rb index e2779d2a..bc2ddb25 100644 --- a/test/haml_test.rb +++ b/test/haml_test.rb @@ -5,10 +5,10 @@ require 'haml' class HAMLTest < Test::Unit::TestCase def haml_app(&block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } + get('/', &block) + end get '/' end @@ -25,35 +25,29 @@ class HAMLTest < Test::Unit::TestCase end it "renders with inline layouts" do - mock_app { + mock_app do layout { %q(%h1= 'THIS. IS. ' + yield.upcase) } get('/') { haml '%em Sparta' } - } + end get '/' assert ok? assert_equal "

THIS. IS. SPARTA

\n", body end it "renders with file layouts" do - haml_app { - haml 'Hello World', :layout => :layout2 - } + haml_app { haml 'Hello World', :layout => :layout2 } assert ok? assert_equal "

HAML Layout!

\n

Hello World

\n", body end it "raises error if template not found" do - mock_app { - get('/') { haml :no_such_template } - } + mock_app { get('/') { haml :no_such_template } } assert_raise(Errno::ENOENT) { get('/') } end it "passes HAML options to the Haml engine" do mock_app { - get '/' do - haml "!!!\n%h1 Hello World", :format => :html5 - end + get('/') { haml "!!!\n%h1 Hello World", :format => :html5 } } get '/' assert ok? @@ -61,27 +55,23 @@ class HAMLTest < Test::Unit::TestCase end it "passes default HAML options to the Haml engine" do - mock_app { + mock_app do set :haml, {:format => :html5} - get '/' do - haml "!!!\n%h1 Hello World" - end - } + get('/') { haml "!!!\n%h1 Hello World" } + end get '/' assert ok? assert_equal "\n

Hello World

\n", body end it "merges the default HAML options with the overrides and passes them to the Haml engine" do - mock_app { + mock_app do set :haml, {:format => :html5, :attr_wrapper => '"'} # default HAML attr are - get '/' do - haml "!!!\n%h1{:class => :header} Hello World" - end - get '/html4' do + get('/') { haml "!!!\n%h1{:class => :header} Hello World" } + get('/html4') { haml "!!!\n%h1{:class => 'header'} Hello World", :format => :html4 - end - } + } + end get '/' assert ok? assert_equal "\n

Hello World

\n", body diff --git a/test/helpers_test.rb b/test/helpers_test.rb index f0bd7de1..1c789ce7 100644 --- a/test/helpers_test.rb +++ b/test/helpers_test.rb @@ -10,7 +10,7 @@ class HelpersTest < Test::Unit::TestCase code += 2 if [204, 205, 304].include? code block ||= proc { } mock_app do - get '/' do + get('/') do status code instance_eval(&block).inspect end @@ -119,22 +119,16 @@ class HelpersTest < Test::Unit::TestCase describe 'body' do it 'takes a block for defered body generation' do - mock_app { - get '/' do - body { 'Hello World' } - end - } + mock_app do + get('/') { body { 'Hello World' } } + end get '/' assert_equal 'Hello World', body end it 'takes a String, Array, or other object responding to #each' do - mock_app { - get '/' do - body 'Hello World' - end - } + mock_app { get('/') { body 'Hello World' } } get '/' assert_equal 'Hello World', body @@ -143,12 +137,12 @@ class HelpersTest < Test::Unit::TestCase describe 'redirect' do it 'uses a 302 when only a path is given' do - mock_app { - get '/' do + mock_app do + get('/') do redirect '/foo' fail 'redirect should halt' end - } + end get '/' assert_equal 302, status @@ -157,12 +151,12 @@ class HelpersTest < Test::Unit::TestCase end it 'uses the code given when specified' do - mock_app { - get '/' do + mock_app do + get('/') do redirect '/foo', 301 fail 'redirect should halt' end - } + end get '/' assert_equal 301, status @@ -171,11 +165,7 @@ class HelpersTest < Test::Unit::TestCase end it 'redirects back to request.referer when passed back' do - mock_app { - get '/try_redirect' do - redirect back - end - } + mock_app { get('/try_redirect') { redirect back } } request = Rack::MockRequest.new(@app) response = request.get('/try_redirect', 'HTTP_REFERER' => '/foo') @@ -184,11 +174,7 @@ class HelpersTest < Test::Unit::TestCase end it 'redirects using a non-standard HTTP port' do - mock_app { - get '/' do - redirect '/foo' - end - } + mock_app { get('/') { redirect '/foo' } } request = Rack::MockRequest.new(@app) response = request.get('/', 'SERVER_PORT' => '81') @@ -196,11 +182,7 @@ class HelpersTest < Test::Unit::TestCase end it 'redirects using a non-standard HTTPS port' do - mock_app { - get '/' do - redirect '/foo' - end - } + mock_app { get('/') { redirect '/foo' } } request = Rack::MockRequest.new(@app) response = request.get('/', 'SERVER_PORT' => '444') @@ -209,7 +191,7 @@ class HelpersTest < Test::Unit::TestCase it 'uses 303 for post requests if request is HTTP 1.1' do mock_app { post('/') { redirect '/'} } - post '/', {}, 'HTTP_VERSION' => 'HTTP/1.1' + post('/', {}, 'HTTP_VERSION' => 'HTTP/1.1') assert_equal 303, status assert_equal '', body assert_equal 'http://example.org/', response['Location'] @@ -217,18 +199,14 @@ class HelpersTest < Test::Unit::TestCase it 'uses 302 for post requests if request is HTTP 1.0' do mock_app { post('/') { redirect '/'} } - post '/', {}, 'HTTP_VERSION' => 'HTTP/1.0' + post('/', {}, 'HTTP_VERSION' => 'HTTP/1.0') assert_equal 302, status assert_equal '', body assert_equal 'http://example.org/', response['Location'] end it 'works behind a reverse proxy' do - mock_app do - get '/' do - redirect '/foo' - end - end + mock_app { get('/') { redirect '/foo' } } request = Rack::MockRequest.new(@app) response = request.get('/', 'HTTP_X_FORWARDED_HOST' => 'example.com', 'SERVER_PORT' => '8080') @@ -237,7 +215,7 @@ class HelpersTest < Test::Unit::TestCase it 'accepts absolute URIs' do mock_app do - get '/' do + get('/') do redirect 'http://google.com' fail 'redirect should halt' end @@ -251,7 +229,7 @@ class HelpersTest < Test::Unit::TestCase it 'accepts absolute URIs with a different schema' do mock_app do - get '/' do + get('/') do redirect 'mailto:jsmith@example.com' fail 'redirect should halt' end @@ -266,12 +244,12 @@ class HelpersTest < Test::Unit::TestCase describe 'error' do it 'sets a status code and halts' do - mock_app { - get '/' do + mock_app do + get('/') do error 501 fail 'error should halt' end - } + end get '/' assert_equal 501, status @@ -279,12 +257,12 @@ class HelpersTest < Test::Unit::TestCase end it 'takes an optional body' do - mock_app { - get '/' do + mock_app do + get('/') do error 501, 'FAIL' fail 'error should halt' end - } + end get '/' assert_equal 501, status @@ -292,12 +270,12 @@ class HelpersTest < Test::Unit::TestCase end it 'uses a 500 status code when first argument is a body' do - mock_app { - get '/' do + mock_app do + get('/') do error 'FAIL' fail 'error should halt' end - } + end get '/' assert_equal 500, status @@ -307,12 +285,12 @@ class HelpersTest < Test::Unit::TestCase describe 'not_found' do it 'halts with a 404 status' do - mock_app { - get '/' do + mock_app do + get('/') do not_found fail 'not_found should halt' end - } + end get '/' assert_equal 404, status @@ -320,12 +298,12 @@ class HelpersTest < Test::Unit::TestCase end it 'does not set a X-Cascade header' do - mock_app { - get '/' do + mock_app do + get('/') do not_found fail 'not_found should halt' end - } + end get '/' assert_equal 404, status @@ -335,12 +313,12 @@ class HelpersTest < Test::Unit::TestCase describe 'headers' do it 'sets headers on the response object when given a Hash' do - mock_app { - get '/' do + mock_app do + get('/') do headers 'X-Foo' => 'bar', 'X-Baz' => 'bling' 'kthx' end - } + end get '/' assert ok? @@ -350,12 +328,12 @@ class HelpersTest < Test::Unit::TestCase end it 'returns the response headers hash when no hash provided' do - mock_app { - get '/' do + mock_app do + get('/') do headers['X-Foo'] = 'bar' 'kthx' end - } + end get '/' assert ok? @@ -365,30 +343,30 @@ class HelpersTest < Test::Unit::TestCase describe 'session' do it 'uses the existing rack.session' do - mock_app { - get '/' do + mock_app do + get('/') do session[:foo] end - } + end - get '/', {}, { 'rack.session' => { :foo => 'bar' } } + get('/', {}, { 'rack.session' => { :foo => 'bar' } }) assert_equal 'bar', body end it 'creates a new session when none provided' do - mock_app { + mock_app do enable :sessions - get '/' do + get('/') do assert session[:foo].nil? session[:foo] = 'bar' redirect '/hi' end - get '/hi' do + get('/hi') do "hi #{session[:foo]}" end - } + end get '/' follow_redirect! @@ -398,7 +376,8 @@ class HelpersTest < Test::Unit::TestCase it 'inserts session middleware' do mock_app do enable :sessions - get '/' do + + get('/') do assert env['rack.session'] assert env['rack.session.options'] 'ok' @@ -412,7 +391,8 @@ class HelpersTest < Test::Unit::TestCase it 'sets a default session secret' do mock_app do enable :sessions - get '/' do + + get('/') do secret = env['rack.session.options'][:secret] assert secret assert_equal secret, settings.session_secret @@ -428,7 +408,8 @@ class HelpersTest < Test::Unit::TestCase mock_app do enable :sessions disable :session_secret - get '/' do + + get('/') do assert !env['rack.session.options'].include?(:session_secret) 'ok' end @@ -441,7 +422,8 @@ class HelpersTest < Test::Unit::TestCase it 'accepts an options hash' do mock_app do set :sessions, :foo => :bar - get '/' do + + get('/') do assert_equal env['rack.session.options'][:foo], :bar 'ok' end @@ -476,13 +458,13 @@ class HelpersTest < Test::Unit::TestCase end test 'Base.mime_type registers mime type' do - mock_app { + mock_app do mime_type :foo, 'application/foo' - get '/' do + get('/') do "foo is #{mime_type(:foo)}" end - } + end get '/' assert_equal 'foo is application/foo', body @@ -490,12 +472,12 @@ class HelpersTest < Test::Unit::TestCase describe 'content_type' do it 'sets the Content-Type header' do - mock_app { - get '/' do + mock_app do + get('/') do content_type 'text/plain' 'Hello World' end - } + end get '/' assert_equal 'text/plain;charset=utf-8', response['Content-Type'] @@ -503,12 +485,12 @@ class HelpersTest < Test::Unit::TestCase end it 'takes media type parameters (like charset=)' do - mock_app { - get '/' do + mock_app do + get('/') do content_type 'text/html', :charset => 'latin1' "

Hello, World

" end - } + end get '/' assert ok? @@ -518,12 +500,12 @@ class HelpersTest < Test::Unit::TestCase it "looks up symbols in Rack's mime types dictionary" do Rack::Mime::MIME_TYPES['.foo'] = 'application/foo' - mock_app { - get '/foo.xml' do + mock_app do + get('/foo.xml') do content_type :foo "I AM FOO" end - } + end get '/foo.xml' assert ok? @@ -532,12 +514,12 @@ class HelpersTest < Test::Unit::TestCase end it 'fails when no mime type is registered for the argument provided' do - mock_app { - get '/foo.xml' do + mock_app do + get('/foo.xml') do content_type :bizzle "I AM FOO" end - } + end assert_raise(RuntimeError) { get '/foo.xml' } end @@ -549,7 +531,7 @@ class HelpersTest < Test::Unit::TestCase mime_type :bar, 'application/bar' mime_type :baz, 'application/baz' add_charset << mime_type(:baz) - get '/' do + get('/') do assert_equal content_type(:txt), 'text/plain;charset=utf-8' assert_equal content_type(:css), 'text/css;charset=utf-8' assert_equal content_type(:html), 'text/html;charset=utf-8' @@ -565,28 +547,31 @@ class HelpersTest < Test::Unit::TestCase "done" end end + get '/' assert tests_ran end it 'handles already present params' do mock_app do - get '/' do + get('/') do content_type 'foo/bar;level=1', :charset => 'utf-8' 'ok' end end + get '/' assert_equal 'foo/bar;level=1, charset=utf-8', response['Content-Type'] end it 'does not add charset if present' do mock_app do - get '/' do + get('/') do content_type 'text/plain;charset=utf-16' 'ok' end end + get '/' assert_equal 'text/plain;charset=utf-16', response['Content-Type'] end @@ -594,12 +579,12 @@ class HelpersTest < Test::Unit::TestCase describe 'attachment' do def attachment_app(filename=nil) - mock_app { - get '/attachment' do + mock_app do + get('/attachment') do attachment filename response.write("") end - } + end end it 'sets the Content-Type response header' do @@ -618,12 +603,13 @@ class HelpersTest < Test::Unit::TestCase it 'sets the Content-Type response header without extname' do mock_app do - get '/attachment' do + get('/attachment') do content_type :atom attachment 'test.xml' response.write("") end end + get '/attachment' assert_equal 'application/atom+xml', response['Content-Type'] assert_equal '', body @@ -697,9 +683,7 @@ class HelpersTest < Test::Unit::TestCase it "returns a 404 when not found" do mock_app { - get '/' do - send_file 'this-file-does-not-exist.txt' - end + get('/') { send_file 'this-file-does-not-exist.txt' } } get '/' assert not_found? @@ -746,7 +730,7 @@ class HelpersTest < Test::Unit::TestCase it "does not override Content-Type if already set and no explicit type is given" do path = @file mock_app do - get '/' do + get('/') do content_type :png send_file path end @@ -758,7 +742,7 @@ class HelpersTest < Test::Unit::TestCase it "does override Content-Type even if already set, if explicit type is given" do path = @file mock_app do - get '/' do + get('/') do content_type :png send_file path, :type => :gif end @@ -771,12 +755,12 @@ class HelpersTest < Test::Unit::TestCase describe 'cache_control' do setup do mock_app do - get '/foo' do + get('/foo') do cache_control :public, :no_cache, :max_age => 60.0 'Hello World' end - get '/bar' do + get('/bar') do cache_control :public, :no_cache 'Hello World' end @@ -797,20 +781,16 @@ class HelpersTest < Test::Unit::TestCase describe 'expires' do setup do mock_app do - get '/foo' do + get('/foo') do expires 60, :public, :no_cache 'Hello World' end - get '/bar' do - expires Time.now - end + get('/bar') { expires Time.now } - get '/baz' do - expires Time.at(0) - end + get('/baz') { expires Time.at(0) } - get '/blah' do + get('/blah') do obj = Object.new def obj.method_missing(*a, &b) 60.send(*a, &b) end def obj.is_a?(thing) 60.is_a?(thing) end @@ -818,9 +798,7 @@ class HelpersTest < Test::Unit::TestCase 'Hello World' end - get '/boom' do - expires '9999' - end + get('/boom') { expires '9999' } end end @@ -856,9 +834,7 @@ class HelpersTest < Test::Unit::TestCase describe 'last_modified' do it 'ignores nil' do - mock_app do - get '/' do last_modified nil; 200; end - end + mock_app { get('/') { last_modified nil; 200; } } get '/' assert ! response['Last-Modified'] @@ -866,7 +842,7 @@ class HelpersTest < Test::Unit::TestCase it 'does not change a status other than 200' do mock_app do - get '/' do + get('/') do status 299 last_modified Time.at(0) 'ok' @@ -883,7 +859,7 @@ class HelpersTest < Test::Unit::TestCase describe "with #{last_modified_time.class.name}" do setup do mock_app do - get '/' do + get('/') do last_modified last_modified_time 'Boo!' end @@ -910,12 +886,12 @@ class HelpersTest < Test::Unit::TestCase context "when there's an invalid If-Modified-Since header" do it 'sets the Last-Modified header to a valid RFC 2616 date value' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'a really weird date' } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'a really weird date' }) assert_equal @last_modified_time.httpdate, response['Last-Modified'] end it 'conditional GET misses and returns a body' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'a really weird date' } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'a really weird date' }) assert_equal 200, status assert_equal 'Boo!', body end @@ -923,28 +899,28 @@ class HelpersTest < Test::Unit::TestCase context "when the resource has been modified since the If-Modified-Since header date" do it 'sets the Last-Modified header to a valid RFC 2616 date value' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time - 1).httpdate } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time - 1).httpdate }) assert_equal @last_modified_time.httpdate, response['Last-Modified'] end it 'conditional GET misses and returns a body' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time - 1).httpdate } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time - 1).httpdate }) assert_equal 200, status assert_equal 'Boo!', body end it 'does not rely on string comparison' do mock_app do - get '/compare' do + get('/compare') do last_modified "Mon, 18 Oct 2010 20:57:11 GMT" "foo" end end - get '/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2010 23:43:52 GMT' } + get('/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2010 23:43:52 GMT' }) assert_equal 200, status assert_equal 'foo', body - get '/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2030 23:43:52 GMT' } + get('/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2030 23:43:52 GMT' }) assert_equal 304, status assert_equal '', body end @@ -952,12 +928,12 @@ class HelpersTest < Test::Unit::TestCase context "when the resource has been modified on the exact If-Modified-Since header date" do it 'sets the Last-Modified header to a valid RFC 2616 date value' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => @last_modified_time.httpdate } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => @last_modified_time.httpdate }) assert_equal @last_modified_time.httpdate, response['Last-Modified'] end it 'conditional GET matches and halts' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => @last_modified_time.httpdate } + get( '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => @last_modified_time.httpdate }) assert_equal 304, status assert_equal '', body end @@ -965,12 +941,12 @@ class HelpersTest < Test::Unit::TestCase context "when the resource hasn't been modified since the If-Modified-Since header date" do it 'sets the Last-Modified header to a valid RFC 2616 date value' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time + 1).httpdate } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time + 1).httpdate }) assert_equal @last_modified_time.httpdate, response['Last-Modified'] end it 'conditional GET matches and halts' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time + 1).httpdate } + get('/', {}, { 'HTTP_IF_MODIFIED_SINCE' => (@last_modified_time + 1).httpdate }) assert_equal 304, status assert_equal '', body end @@ -978,13 +954,13 @@ class HelpersTest < Test::Unit::TestCase context "If-Unmodified-Since" do it 'results in 200 if resource has not been modified' do - get '/', {}, { 'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 26 Sep 2030 23:43:52 GMT' } + get('/', {}, { 'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 26 Sep 2030 23:43:52 GMT' }) assert_equal 200, status assert_equal 'Boo!', body end it 'results in 412 if resource has been modified' do - get '/', {}, { 'HTTP_IF_UNMODIFIED_SINCE' => Time.at(0).httpdate } + get('/', {}, { 'HTTP_IF_UNMODIFIED_SINCE' => Time.at(0).httpdate }) assert_equal 412, status assert_equal '', body end @@ -997,13 +973,13 @@ class HelpersTest < Test::Unit::TestCase context "safe requests" do it 'returns 200 for normal requests' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end end - get('/') + get '/' assert_status 200 assert_body 'ok' end @@ -1011,7 +987,7 @@ class HelpersTest < Test::Unit::TestCase context "If-None-Match" do it 'returns 304 when If-None-Match is *' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1024,7 +1000,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-None-Match is * for new resources' do mock_app do - get '/' do + get('/') do etag 'foo', :new_resource => true 'ok' end @@ -1037,7 +1013,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 304 when If-None-Match is * for existing resources' do mock_app do - get '/' do + get('/') do etag 'foo', :new_resource => false 'ok' end @@ -1050,7 +1026,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 304 when If-None-Match is the etag' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1063,7 +1039,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 304 when If-None-Match includes the etag' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1076,7 +1052,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-None-Match does not include the etag' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1089,7 +1065,7 @@ class HelpersTest < Test::Unit::TestCase it 'ignores If-Modified-Since if If-None-Match does not match' do mock_app do - get '/' do + get('/') do etag 'foo' last_modified Time.at(0) 'ok' @@ -1103,7 +1079,7 @@ class HelpersTest < Test::Unit::TestCase it 'does not change a status code other than 2xx or 304' do mock_app do - get '/' do + get('/') do status 499 etag 'foo' 'ok' @@ -1117,7 +1093,7 @@ class HelpersTest < Test::Unit::TestCase it 'does change 2xx status codes' do mock_app do - get '/' do + get('/') do status 299 etag 'foo' 'ok' @@ -1131,7 +1107,7 @@ class HelpersTest < Test::Unit::TestCase it 'does not send a body on 304 status codes' do mock_app do - get '/' do + get('/') do status 304 etag 'foo' 'ok' @@ -1147,7 +1123,7 @@ class HelpersTest < Test::Unit::TestCase context "If-Match" do it 'returns 200 when If-Match is the etag' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1160,7 +1136,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match includes the etag' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1173,7 +1149,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match is *' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1186,7 +1162,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match is * for new resources' do mock_app do - get '/' do + get('/') do etag 'foo', :new_resource => true 'ok' end @@ -1199,7 +1175,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match is * for existing resources' do mock_app do - get '/' do + get('/') do etag 'foo', :new_resource => false 'ok' end @@ -1212,7 +1188,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match does not include the etag' do mock_app do - get '/' do + get('/') do etag 'foo' 'ok' end @@ -1228,13 +1204,13 @@ class HelpersTest < Test::Unit::TestCase context "idempotent requests" do it 'returns 200 for normal requests' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end end - put('/') + put '/' assert_status 200 assert_body 'ok' end @@ -1242,7 +1218,7 @@ class HelpersTest < Test::Unit::TestCase context "If-None-Match" do it 'returns 412 when If-None-Match is *' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1255,7 +1231,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-None-Match is * for new resources' do mock_app do - put '/' do + put('/') do etag 'foo', :new_resource => true 'ok' end @@ -1268,7 +1244,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-None-Match is * for existing resources' do mock_app do - put '/' do + put('/') do etag 'foo', :new_resource => false 'ok' end @@ -1294,7 +1270,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-None-Match includes the etag' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1307,7 +1283,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-None-Match does not include the etag' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1320,7 +1296,7 @@ class HelpersTest < Test::Unit::TestCase it 'ignores If-Modified-Since if If-None-Match does not match' do mock_app do - put '/' do + put('/') do etag 'foo' last_modified Time.at(0) 'ok' @@ -1336,7 +1312,7 @@ class HelpersTest < Test::Unit::TestCase context "If-Match" do it 'returns 200 when If-Match is the etag' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1349,7 +1325,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match includes the etag' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1362,7 +1338,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match is *' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1375,7 +1351,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match is * for new resources' do mock_app do - put '/' do + put('/') do etag 'foo', :new_resource => true 'ok' end @@ -1388,7 +1364,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match is * for existing resources' do mock_app do - put '/' do + put('/') do etag 'foo', :new_resource => false 'ok' end @@ -1401,7 +1377,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match does not include the etag' do mock_app do - put '/' do + put('/') do etag 'foo' 'ok' end @@ -1417,7 +1393,7 @@ class HelpersTest < Test::Unit::TestCase context "post requests" do it 'returns 200 for normal requests' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1431,7 +1407,7 @@ class HelpersTest < Test::Unit::TestCase context "If-None-Match" do it 'returns 200 when If-None-Match is *' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1444,7 +1420,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-None-Match is * for new resources' do mock_app do - post '/' do + post('/') do etag 'foo', :new_resource => true 'ok' end @@ -1457,7 +1433,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-None-Match is * for existing resources' do mock_app do - post '/' do + post('/') do etag 'foo', :new_resource => false 'ok' end @@ -1470,7 +1446,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-None-Match is the etag' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1483,7 +1459,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-None-Match includes the etag' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1496,7 +1472,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-None-Match does not include the etag' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1509,7 +1485,7 @@ class HelpersTest < Test::Unit::TestCase it 'ignores If-Modified-Since if If-None-Match does not match' do mock_app do - post '/' do + post('/') do etag 'foo' last_modified Time.at(0) 'ok' @@ -1525,7 +1501,7 @@ class HelpersTest < Test::Unit::TestCase context "If-Match" do it 'returns 200 when If-Match is the etag' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1538,7 +1514,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match includes the etag' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1551,7 +1527,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match is *' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1564,7 +1540,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match is * for new resources' do mock_app do - post '/' do + post('/') do etag 'foo', :new_resource => true 'ok' end @@ -1577,7 +1553,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 200 when If-Match is * for existing resources' do mock_app do - post '/' do + post('/') do etag 'foo', :new_resource => false 'ok' end @@ -1590,7 +1566,7 @@ class HelpersTest < Test::Unit::TestCase it 'returns 412 when If-Match does not include the etag' do mock_app do - post '/' do + post('/') do etag 'foo' 'ok' end @@ -1605,7 +1581,7 @@ class HelpersTest < Test::Unit::TestCase it 'uses a weak etag with the :weak option' do mock_app do - get '/' do + get('/') do etag 'FOO', :weak "that's weak, dude." end @@ -1616,24 +1592,20 @@ class HelpersTest < Test::Unit::TestCase it 'raises an ArgumentError for an invalid strength' do mock_app do - get '/' do + get('/') do etag 'FOO', :w00t "that's weak, dude." end end - assert_raise(ArgumentError) { get '/' } + assert_raise(ArgumentError) { get('/') } end end describe 'back' do it "makes redirecting back pretty" do - mock_app { - get '/foo' do - redirect back - end - } + mock_app { get('/foo') { redirect back } } - get '/foo', {}, 'HTTP_REFERER' => 'http://github.com' + get('/foo', {}, 'HTTP_REFERER' => 'http://github.com') assert redirect? assert_equal "http://github.com", response.location end @@ -1693,7 +1665,7 @@ class HelpersTest < Test::Unit::TestCase it 'logging works when logging is enabled' do mock_app do enable :logging - get '/' do + get('/') do logger.info "Program started" logger.warn "Nothing to do!" end @@ -1707,7 +1679,7 @@ class HelpersTest < Test::Unit::TestCase it 'logging works when logging is disable, but no output is produced' do mock_app do disable :logging - get '/' do + get('/') do logger.info "Program started" logger.warn "Nothing to do!" end @@ -1734,17 +1706,13 @@ class HelpersTest < Test::Unit::TestCase describe 'Adding new helpers' do it 'takes a list of modules to mix into the app' do - mock_app { + mock_app do helpers ::HelperOne, ::HelperTwo - get '/one' do - one - end + get('/one') { one } - get '/two' do - two - end - } + get('/two') { two } + end get '/one' assert_equal '1', body @@ -1754,32 +1722,26 @@ class HelpersTest < Test::Unit::TestCase end it 'takes a block to mix into the app' do - mock_app { + mock_app do helpers do def foo 'foo' end end - get '/' do - foo - end - } + get('/') { foo } + end get '/' assert_equal 'foo', body end it 'evaluates the block in class context so that methods can be aliased' do - mock_app { - helpers do - alias_method :h, :escape_html - end + mock_app do + helpers { alias_method :h, :escape_html } - get '/' do - h('42 < 43') - end - } + get('/') { h('42 < 43') } + end get '/' assert ok? diff --git a/test/less_test.rb b/test/less_test.rb index 979f201c..505ef753 100644 --- a/test/less_test.rb +++ b/test/less_test.rb @@ -5,22 +5,26 @@ require 'less' class LessTest < Test::Unit::TestCase def less_app(options = {}, &block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' set options - get '/', &block - } + get('/', &block) + end get '/' end it 'renders inline Less strings' do - less_app { less "@white_color: #fff; #main { background-color: @white_color }" } + less_app { + less "@white_color: #fff; #main { background-color: @white_color }" + } assert ok? assert_equal "#main{background-color:#ffffff;}", body.gsub(/\s/, "") end it 'defaults content type to css' do - less_app { less "@white_color: #fff; #main { background-color: @white_color }" } + less_app { + less "@white_color: #fff; #main { background-color: @white_color }" + } assert ok? assert_equal "text/css;charset=utf-8", response['Content-Type'] end @@ -55,9 +59,7 @@ class LessTest < Test::Unit::TestCase end it "raises error if template not found" do - mock_app { - get('/') { less :no_such_template } - } + mock_app { get('/') { less :no_such_template } } assert_raise(Errno::ENOENT) { get('/') } end end diff --git a/test/liquid_test.rb b/test/liquid_test.rb index ef398afd..9d341ca1 100644 --- a/test/liquid_test.rb +++ b/test/liquid_test.rb @@ -7,7 +7,7 @@ class LiquidTest < Test::Unit::TestCase def liquid_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -46,9 +46,9 @@ class LiquidTest < Test::Unit::TestCase end it "allows passing locals" do - liquid_app do + liquid_app { liquid '{{ value }}', :locals => { :value => 'foo' } - end + } assert ok? assert_equal 'foo', body end diff --git a/test/mapped_error_test.rb b/test/mapped_error_test.rb index 8b073a78..c02082be 100644 --- a/test/mapped_error_test.rb +++ b/test/mapped_error_test.rb @@ -28,13 +28,11 @@ class MappedErrorTest < Test::Unit::TestCase describe 'Exception Mappings' do it 'invokes handlers registered with ::error when raised' do - mock_app { + mock_app do set :raise_errors, false error(FooError) { 'Foo!' } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 500, status assert_equal 'Foo!', body @@ -50,13 +48,11 @@ class MappedErrorTest < Test::Unit::TestCase end it 'uses the Exception handler if no matching handler found' do - mock_app { + mock_app do set :raise_errors, false error(Exception) { 'Exception!' } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 500, status @@ -64,13 +60,11 @@ class MappedErrorTest < Test::Unit::TestCase end it 'walks down inheritance chain for errors' do - mock_app { + mock_app do set :raise_errors, false error(RuntimeError) { 'Exception!' } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 500, status @@ -78,15 +72,13 @@ class MappedErrorTest < Test::Unit::TestCase end it 'favors subclass handler over superclass handler if available' do - mock_app { + mock_app do set :raise_errors, false error(Exception) { 'Exception!' } error(FooError) { 'FooError!' } error(RuntimeError) { 'Exception!' } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 500, status @@ -94,68 +86,58 @@ class MappedErrorTest < Test::Unit::TestCase end it "sets env['sinatra.error'] to the rescued exception" do - mock_app { + mock_app do set :raise_errors, false - error(FooError) { + error(FooError) do assert env.include?('sinatra.error') assert env['sinatra.error'].kind_of?(FooError) 'looks good' - } - get '/' do - raise FooError end - } + get('/') { raise FooError } + end get '/' assert_equal 'looks good', body end it "raises errors from the app when raise_errors set and no handler defined" do - mock_app { + mock_app do set :raise_errors, true - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end assert_raise(FooError) { get '/' } end it "calls error handlers before raising errors even when raise_errors is set" do - mock_app { + mock_app do set :raise_errors, true error(FooError) { "she's there." } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end assert_nothing_raised { get '/' } assert_equal 500, status end it "never raises Sinatra::NotFound beyond the application" do - mock_app(Sinatra::Application) { get('/') { raise Sinatra::NotFound }} + mock_app(Sinatra::Application) do + get('/') { raise Sinatra::NotFound } + end assert_nothing_raised { get '/' } assert_equal 404, status end it "cascades for subclasses of Sinatra::NotFound" do - mock_app { + mock_app do set :raise_errors, true error(FooNotFound) { "foo! not found." } - get '/' do - raise FooNotFound - end - } + get('/') { raise FooNotFound } + end assert_nothing_raised { get '/' } assert_equal 404, status assert_equal 'foo! not found.', body end it 'has a not_found method for backwards compatibility' do - mock_app { - not_found do - "Lost, are we?" - end - } + mock_app { not_found { "Lost, are we?" } } get '/test' assert_equal 404, status @@ -166,12 +148,10 @@ class MappedErrorTest < Test::Unit::TestCase base = Class.new(Sinatra::Base) base.error(FooError) { 'base class' } - mock_app(base) { + mock_app(base) do set :raise_errors, false - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 'base class', body @@ -181,13 +161,11 @@ class MappedErrorTest < Test::Unit::TestCase base = Class.new(Sinatra::Base) base.error(FooError) { 'base class' } - mock_app(base) { + mock_app(base) do set :raise_errors, false error(FooError) { 'subclass' } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 'subclass', body @@ -234,36 +212,36 @@ class MappedErrorTest < Test::Unit::TestCase end it "allows a stack of exception_handlers" do - mock_app { + mock_app do set :raise_errors, false error(FirstError) { 'First!' } error(SecondError) { 'Second!' } get('/'){ raise SecondError } - } + end get '/' assert_equal 500, status assert_equal 'Second!', body end it "allows an exception handler to pass control to the next exception handler" do - mock_app { + mock_app do set :raise_errors, false error(500, FirstError) { 'First!' } error(500, SecondError) { pass } get('/') { raise 500 } - } + end get '/' assert_equal 500, status assert_equal 'First!', body end it "allows an exception handler to handle the exception" do - mock_app { + mock_app do set :raise_errors, false error(500, FirstError) { 'First!' } error(500, SecondError) { 'Second!' } get('/') { raise 500 } - } + end get '/' assert_equal 500, status assert_equal 'Second!', body @@ -272,39 +250,33 @@ class MappedErrorTest < Test::Unit::TestCase describe 'Custom Error Pages' do it 'allows numeric status code mappings to be registered with ::error' do - mock_app { + mock_app do set :raise_errors, false error(500) { 'Foo!' } - get '/' do - [500, {}, 'Internal Foo Error'] - end - } + get('/') { [500, {}, 'Internal Foo Error'] } + end get '/' assert_equal 500, status assert_equal 'Foo!', body end it 'allows ranges of status code mappings to be registered with :error' do - mock_app { + mock_app do set :raise_errors, false error(500..550) { "Error: #{response.status}" } - get '/' do - [507, {}, 'A very special error'] - end - } + get('/') { [507, {}, 'A very special error'] } + end get '/' assert_equal 507, status assert_equal 'Error: 507', body end it 'allows passing more than one range' do - mock_app { + mock_app do set :raise_errors, false error(409..411, 503..509) { "Error: #{response.status}" } - get '/' do - [507, {}, 'A very special error'] - end - } + get('/') { [507, {}, 'A very special error'] } + end get '/' assert_equal 507, status assert_equal 'Error: 507', body @@ -314,7 +286,7 @@ class MappedErrorTest < Test::Unit::TestCase end it 'runs after exception mappings and overwrites body' do - mock_app { + mock_app do set :raise_errors, false error FooError do response.status = 502 @@ -323,10 +295,8 @@ class MappedErrorTest < Test::Unit::TestCase error(500) { 'from 500 handler' } error(502) { 'from custom error page' } - get '/' do - raise FooError - end - } + get('/') { raise FooError } + end get '/' assert_equal 502, status assert_equal 'from custom error page', body diff --git a/test/markaby_test.rb b/test/markaby_test.rb index d4e06ee6..546fb3c5 100644 --- a/test/markaby_test.rb +++ b/test/markaby_test.rb @@ -7,7 +7,7 @@ class MarkabyTest < Test::Unit::TestCase def markaby_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -67,9 +67,9 @@ class MarkabyTest < Test::Unit::TestCase end it "allows passing locals" do - markaby_app do + markaby_app { markaby 'text value', :locals => { :value => 'foo' } - end + } assert ok? assert_equal 'foo', body end diff --git a/test/markdown_test.rb b/test/markdown_test.rb index f9f7a6b8..f553682f 100644 --- a/test/markdown_test.rb +++ b/test/markdown_test.rb @@ -4,7 +4,7 @@ MarkdownTest = proc do def markdown_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -48,7 +48,9 @@ MarkdownTest = proc do end it "renders with file layouts" do - markdown_app { markdown 'Hello World', :layout => :layout2, :layout_engine => :erb } + markdown_app { + markdown 'Hello World', :layout => :layout2, :layout_engine => :erb + } assert ok? assert_body "ERB Layout!\n

Hello World

" end @@ -57,9 +59,7 @@ MarkdownTest = proc do mock_app do template(:inner) { "hi" } template(:outer) { "<%= markdown :inner %>" } - get '/' do - erb :outer - end + get('/') { erb :outer } end get '/' diff --git a/test/middleware_test.rb b/test/middleware_test.rb index 7ba0c8b9..ef06625c 100644 --- a/test/middleware_test.rb +++ b/test/middleware_test.rb @@ -2,14 +2,14 @@ require File.expand_path('../helper', __FILE__) class MiddlewareTest < Test::Unit::TestCase setup do - @app = mock_app(Sinatra::Application) { - get '/*' do + @app = mock_app(Sinatra::Application) do + get('/*')do response.headers['X-Tests'] = env['test.ran']. map { |n| n.split('::').last }. join(', ') env['PATH_INFO'] end - } + end end class MockMiddleware < Struct.new(:app) diff --git a/test/nokogiri_test.rb b/test/nokogiri_test.rb index 3d708171..033c45c8 100644 --- a/test/nokogiri_test.rb +++ b/test/nokogiri_test.rb @@ -7,7 +7,7 @@ class NokogiriTest < Test::Unit::TestCase def nokogiri_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -21,9 +21,7 @@ class NokogiriTest < Test::Unit::TestCase it 'renders inline blocks' do nokogiri_app do @name = "Frank & Mary" - nokogiri do |xml| - xml.couple @name - end + nokogiri { |xml| xml.couple @name } end assert ok? assert_body %(\nFrank & Mary\n) @@ -51,9 +49,9 @@ class NokogiriTest < Test::Unit::TestCase it "renders with file layouts" do next if Tilt::VERSION <= "1.1" - nokogiri_app do + nokogiri_app { nokogiri %(xml.em 'Hello World'), :layout => :layout2 - end + } assert ok? assert_body %(\n\n Hello World\n\n) end diff --git a/test/radius_test.rb b/test/radius_test.rb index 0e990282..2c098e6e 100644 --- a/test/radius_test.rb +++ b/test/radius_test.rb @@ -7,7 +7,7 @@ class RadiusTest < Test::Unit::TestCase def radius_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -46,9 +46,9 @@ class RadiusTest < Test::Unit::TestCase end it "allows passing locals" do - radius_app do + radius_app { radius '', :locals => { :value => 'foo' } - end + } assert ok? assert_equal 'foo', body end diff --git a/test/rdoc_test.rb b/test/rdoc_test.rb index 0d588563..7d22a1c1 100644 --- a/test/rdoc_test.rb +++ b/test/rdoc_test.rb @@ -8,7 +8,7 @@ class RdocTest < Test::Unit::TestCase def rdoc_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end @@ -41,7 +41,9 @@ class RdocTest < Test::Unit::TestCase end it "renders with file layouts" do - rdoc_app { rdoc 'Hello World', :layout => :layout2, :layout_engine => :erb } + rdoc_app { + rdoc 'Hello World', :layout => :layout2, :layout_engine => :erb + } assert ok? assert_body "ERB Layout!\n

Hello World

" end @@ -50,9 +52,7 @@ class RdocTest < Test::Unit::TestCase mock_app do template(:inner) { "hi" } template(:outer) { "<%= rdoc :inner %>" } - get '/' do - erb :outer - end + get('/') { erb :outer } end get '/' diff --git a/test/readme_test.rb b/test/readme_test.rb index b0a6bce7..26ea0352 100644 --- a/test/readme_test.rb +++ b/test/readme_test.rb @@ -11,29 +11,17 @@ class ReadmeTest < Test::Unit::TestCase section "Routes" do example do mock_app do - get '/' do - ".. show something .." - end + get('/') { ".. show something .." } - post '/' do - ".. create something .." - end + post('/') { ".. create something .." } - put '/' do - ".. replace something .." - end + put('/') { ".. replace something .." } - patch '/' do - ".. modify something .." - end + patch('/') { ".. modify something .." } - delete '/' do - ".. annihilate something .." - end + delete('/') { ".. annihilate something .." } - options '/' do - ".. appease something .." - end + options('/') { ".. appease something .." } end get '/' @@ -57,7 +45,7 @@ class ReadmeTest < Test::Unit::TestCase example do mock_app do - get '/hello/:name' do + get('/hello/:name') do # matches "GET /hello/foo" and "GET /hello/bar" # params[:name] is 'foo' or 'bar' "Hello #{params[:name]}!" @@ -72,11 +60,7 @@ class ReadmeTest < Test::Unit::TestCase end example do - mock_app do - get '/hello/:name' do |n| - "Hello #{n}!" - end - end + mock_app { get('/hello/:name') { |n| "Hello #{n}!" } } get '/hello/foo' assert_body 'Hello foo!' @@ -87,12 +71,12 @@ class ReadmeTest < Test::Unit::TestCase example do mock_app do - get '/say/*/to/*' do + get('/say/*/to/*') do # matches /say/hello/to/world params[:splat].inspect # => ["hello", "world"] end - get '/download/*.*' do + get('/download/*.*') do # matches /download/path/to/file.xml params[:splat].inspect # => ["path/to/file", "xml"] end @@ -107,9 +91,9 @@ class ReadmeTest < Test::Unit::TestCase example do mock_app do - get %r{/hello/([\w]+)} do + get(%r{/hello/([\w]+)}) { "Hello, #{params[:captures].first}!" - end + } end get '/hello/foo' @@ -121,9 +105,9 @@ class ReadmeTest < Test::Unit::TestCase example do mock_app do - get %r{/hello/([\w]+)} do |c| + get( %r{/hello/([\w]+)}) { |c| "Hello, #{c}!" - end + } end get '/hello/foo' diff --git a/test/response_test.rb b/test/response_test.rb index 9d80e4e0..becca508 100644 --- a/test/response_test.rb +++ b/test/response_test.rb @@ -3,9 +3,7 @@ require File.expand_path('../helper', __FILE__) class ResponseTest < Test::Unit::TestCase - setup do - @response = Sinatra::Response.new - end + setup { @response = Sinatra::Response.new } it "initializes with 200, text/html, and empty body" do assert_equal 200, @response.status diff --git a/test/result_test.rb b/test/result_test.rb index 305bcda3..6c59f6b5 100644 --- a/test/result_test.rb +++ b/test/result_test.rb @@ -2,11 +2,7 @@ require File.expand_path('../helper', __FILE__) class ResultTest < Test::Unit::TestCase it "sets response.body when result is a String" do - mock_app { - get '/' do - 'Hello World' - end - } + mock_app { get('/') { 'Hello World' } } get '/' assert ok? @@ -14,11 +10,7 @@ class ResultTest < Test::Unit::TestCase end it "sets response.body when result is an Array of Strings" do - mock_app { - get '/' do - ['Hello', 'World'] - end - } + mock_app { get('/') { ['Hello', 'World'] } } get '/' assert ok? @@ -26,13 +18,13 @@ class ResultTest < Test::Unit::TestCase end it "sets response.body when result responds to #each" do - mock_app { - get '/' do + mock_app do + get('/') do res = lambda { 'Hello World' } def res.each ; yield call ; end - res + return res end - } + end get '/' assert ok? @@ -40,11 +32,7 @@ class ResultTest < Test::Unit::TestCase end it "sets response.body to [] when result is nil" do - mock_app { - get '/' do - nil - end - } + mock_app { get( '/') { nil } } get '/' assert ok? @@ -53,9 +41,7 @@ class ResultTest < Test::Unit::TestCase it "sets status, headers, and body when result is a Rack response tuple" do mock_app { - get '/' do - [203, {'Content-Type' => 'foo/bar'}, 'Hello World'] - end + get('/') { [203, {'Content-Type' => 'foo/bar'}, 'Hello World'] } } get '/' @@ -65,11 +51,7 @@ class ResultTest < Test::Unit::TestCase end it "sets status and body when result is a two-tuple" do - mock_app { - get '/' do - [409, 'formula of'] - end - } + mock_app { get('/') { [409, 'formula of'] } } get '/' assert_equal 409, status @@ -78,18 +60,14 @@ class ResultTest < Test::Unit::TestCase it "raises a ArgumentError when result is a non two or three tuple Array" do mock_app { - get '/' do - [409, 'formula of', 'something else', 'even more'] - end + get('/') { [409, 'formula of', 'something else', 'even more'] } } assert_raise(ArgumentError) { get '/' } end it "sets status when result is a Fixnum status code" do - mock_app { - get('/') { 205 } - } + mock_app { get('/') { 205 } } get '/' assert_equal 205, status diff --git a/test/route_added_hook_test.rb b/test/route_added_hook_test.rb index e621f1b6..b2a22e88 100644 --- a/test/route_added_hook_test.rb +++ b/test/route_added_hook_test.rb @@ -11,16 +11,16 @@ module RouteAddedTest end class RouteAddedHookTest < Test::Unit::TestCase - setup { + setup do RouteAddedTest.routes.clear RouteAddedTest.procs.clear - } + end it "should be notified of an added route" do - mock_app(Class.new(Sinatra::Base)) { + mock_app(Class.new(Sinatra::Base)) do register RouteAddedTest get('/') {} - } + end assert_equal [["GET", "/"], ["HEAD", "/"]], RouteAddedTest.routes @@ -38,21 +38,21 @@ class RouteAddedHookTest < Test::Unit::TestCase end it "should only run once per extension" do - mock_app(Class.new(Sinatra::Base)) { + mock_app(Class.new(Sinatra::Base)) do register RouteAddedTest register RouteAddedTest get('/') {} - } + end assert_equal [["GET", "/"], ["HEAD", "/"]], RouteAddedTest.routes end it "should pass route blocks as an argument" do - mock_app(Class.new(Sinatra::Base)) { + mock_app(Class.new(Sinatra::Base)) do register RouteAddedTest get('/') {} - } + end assert_kind_of Proc, RouteAddedTest.procs.first end diff --git a/test/sass_test.rb b/test/sass_test.rb index f94859ca..b9530262 100644 --- a/test/sass_test.rb +++ b/test/sass_test.rb @@ -6,11 +6,11 @@ require 'sass' class SassTest < Test::Unit::TestCase def sass_app(options = {}, &block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' set options - get '/', &block - } + get('/', &block) + end get '/' end @@ -36,9 +36,9 @@ class SassTest < Test::Unit::TestCase end it 'defaults allows setting content type globally' do - sass_app(:sass => { :content_type => 'html' }) do + sass_app(:sass => { :content_type => 'html' }) { sass "#sass\n :background-color white\n" - end + } assert ok? assert_equal "text/html;charset=utf-8", response['Content-Type'] end @@ -56,50 +56,50 @@ class SassTest < Test::Unit::TestCase end it "raises error if template not found" do - mock_app { - get('/') { sass :no_such_template } - } + mock_app { get('/') { sass :no_such_template } } assert_raise(Errno::ENOENT) { get('/') } end it "passes SASS options to the Sass engine" do - sass_app { - sass "#sass\n :background-color white\n :color black\n", + sass_app do + sass( + "#sass\n :background-color white\n :color black\n", :style => :compact - } + ) + end assert ok? - assert_equal "#sass { background-color: white; color: black; }\n", body + assert_equal("#sass { background-color: white; color: black; }\n", body) end it "passes default SASS options to the Sass engine" do - mock_app { + mock_app do set :sass, {:style => :compact} # default Sass style is :nested - get '/' do - sass "#sass\n :background-color white\n :color black\n" - end - } + get('/') { sass("#sass\n :background-color white\n :color black\n") } + end get '/' assert ok? assert_equal "#sass { background-color: white; color: black; }\n", body end it "merges the default SASS options with the overrides" do - mock_app { + mock_app do # default Sass attribute_syntax is :normal (with : in front) set :sass, {:style => :compact, :attribute_syntax => :alternate } - get '/' do - sass "#sass\n background-color: white\n color: black\n" - end - get '/raised' do + get('/') { sass("#sass\n background-color: white\n color: black\n") } + get('/raised') do # retains global attribute_syntax settings - sass "#sass\n :background-color white\n :color black\n", + sass( + "#sass\n :background-color white\n :color black\n", :style => :expanded + ) end - get '/expanded_normal' do - sass "#sass\n :background-color white\n :color black\n", + get('/expanded_normal') do + sass( + "#sass\n :background-color white\n :color black\n", :style => :expanded, :attribute_syntax => :normal + ) end - } + end get '/' assert ok? assert_equal "#sass { background-color: white; color: black; }\n", body diff --git a/test/scss_test.rb b/test/scss_test.rb index ac2d249c..e5d6857f 100644 --- a/test/scss_test.rb +++ b/test/scss_test.rb @@ -6,11 +6,11 @@ require 'sass' class ScssTest < Test::Unit::TestCase def scss_app(options = {}, &block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' set options - get '/', &block - } + get('/', &block) + end get '/' end @@ -36,9 +36,9 @@ class ScssTest < Test::Unit::TestCase end it 'defaults allows setting content type globally' do - scss_app(:scss => { :content_type => 'html' }) do + scss_app(:scss => { :content_type => 'html' }) { scss "#scss {\n background-color: white; }\n" - end + } assert ok? assert_equal "text/html;charset=utf-8", response['Content-Type'] end @@ -56,28 +56,28 @@ class ScssTest < Test::Unit::TestCase end it "raises error if template not found" do - mock_app { - get('/') { scss :no_such_template } - } + mock_app { get('/') { scss(:no_such_template) } } assert_raise(Errno::ENOENT) { get('/') } end it "passes scss options to the scss engine" do - scss_app { - scss "#scss {\n background-color: white;\n color: black\n}", + scss_app do + scss( + "#scss {\n background-color: white;\n color: black\n}", :style => :compact - } + ) + end assert ok? assert_equal "#scss { background-color: white; color: black; }\n", body end it "passes default scss options to the scss engine" do - mock_app { + mock_app do set :scss, {:style => :compact} # default scss style is :nested - get '/' do - scss "#scss {\n background-color: white;\n color: black;\n}" - end - } + get('/') { + scss("#scss {\n background-color: white;\n color: black;\n}") + } + end get '/' assert ok? assert_equal "#scss { background-color: white; color: black; }\n", body diff --git a/test/server_test.rb b/test/server_test.rb index d4ebdd4d..7a0633c8 100644 --- a/test/server_test.rb +++ b/test/server_test.rb @@ -21,11 +21,11 @@ end class ServerTest < Test::Unit::TestCase setup do - mock_app { + mock_app do set :server, 'mock' set :bind, 'foo.local' set :port, 9001 - } + end $stderr = StringIO.new end diff --git a/test/sinatra_test.rb b/test/sinatra_test.rb index 3f8cedef..459a37c4 100644 --- a/test/sinatra_test.rb +++ b/test/sinatra_test.rb @@ -2,12 +2,7 @@ require File.expand_path('../helper', __FILE__) class SinatraTest < Test::Unit::TestCase it 'creates a new Sinatra::Base subclass on new' do - app = - Sinatra.new do - get '/' do - 'Hello World' - end - end + app = Sinatra.new { get('/') { 'Hello World' } } assert_same Sinatra::Base, app.superclass end diff --git a/test/slim_test.rb b/test/slim_test.rb index d294d21c..e13e357c 100644 --- a/test/slim_test.rb +++ b/test/slim_test.rb @@ -5,10 +5,10 @@ require 'slim' class SlimTest < Test::Unit::TestCase def slim_app(&block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } + get('/', &block) + end get '/' end @@ -25,34 +25,30 @@ class SlimTest < Test::Unit::TestCase end it "renders with inline layouts" do - mock_app { + mock_app do layout { %(h1\n | THIS. IS. \n == yield.upcase ) } get('/') { slim 'em Sparta' } - } + end get '/' assert ok? assert_equal "

THIS. IS. SPARTA

", body end it "renders with file layouts" do - slim_app { - slim '| Hello World', :layout => :layout2 - } + slim_app { slim('| Hello World', :layout => :layout2) } assert ok? assert_equal "

Slim Layout!

Hello World

", body end it "raises error if template not found" do - mock_app { - get('/') { slim :no_such_template } - } + mock_app { get('/') { slim(:no_such_template) } } assert_raise(Errno::ENOENT) { get('/') } end HTML4_DOCTYPE = "" it "passes slim options to the slim engine" do - mock_app { get('/') { slim "x foo='bar'", :attr_wrapper => "'" }} + mock_app { get('/') { slim("x foo='bar'", :attr_wrapper => "'") }} get '/' assert ok? assert_body "" @@ -61,7 +57,7 @@ class SlimTest < Test::Unit::TestCase it "passes default slim options to the slim engine" do mock_app do set :slim, :attr_wrapper => "'" - get('/') { slim "x foo='bar'" } + get('/') { slim("x foo='bar'") } end get '/' assert ok? @@ -71,8 +67,8 @@ class SlimTest < Test::Unit::TestCase it "merges the default slim options with the overrides and passes them to the slim engine" do mock_app do set :slim, :attr_wrapper => "'" - get('/') { slim "x foo='bar'" } - get('/other') { slim "x foo='bar'", :attr_wrapper => '"' } + get('/') { slim("x foo='bar'") } + get('/other') { slim("x foo='bar'", :attr_wrapper => '"') } end get '/' assert ok? diff --git a/test/static_test.rb b/test/static_test.rb index 3f5b671f..320b70bb 100644 --- a/test/static_test.rb +++ b/test/static_test.rb @@ -2,10 +2,10 @@ require File.expand_path('../helper', __FILE__) class StaticTest < Test::Unit::TestCase setup do - mock_app { + mock_app do set :static, true set :public_folder, File.dirname(__FILE__) - } + end end it 'serves GET requests for files in the public directory' do @@ -82,10 +82,10 @@ class StaticTest < Test::Unit::TestCase end it '404s when .. path traverses outside of public directory' do - mock_app { + mock_app do set :static, true set :public_folder, File.dirname(__FILE__) + '/data' - } + end get "/../#{File.basename(__FILE__)}" assert not_found? end @@ -97,11 +97,30 @@ class StaticTest < Test::Unit::TestCase should_be = file[range] expected_range = "bytes #{range.begin}-#{range.end}/#{file.length}" - assert_equal 206,response.status, "Should be HTTP/1.1 206 Partial content" - assert_equal should_be.length, response.body.length, "Unexpected response length for #{http_range}" - assert_equal should_be, response.body, "Unexpected response data for #{http_range}" - assert_equal should_be.length.to_s, response['Content-Length'], "Incorrect Content-Length for #{http_range}" - assert_equal expected_range, response['Content-Range'], "Incorrect Content-Range for #{http_range}" + assert_equal( + 206,response.status, + "Should be HTTP/1.1 206 Partial content" + ) + assert_equal( + should_be.length, + response.body.length, + "Unexpected response length for #{http_range}" + ) + assert_equal( + should_be, + response.body, + "Unexpected response data for #{http_range}" + ) + assert_equal( + should_be.length.to_s, + response['Content-Length'], + "Incorrect Content-Length for #{http_range}" + ) + assert_equal( + expected_range, + response['Content-Range'], + "Incorrect Content-Range for #{http_range}" + ) end it 'handles valid byte ranges correctly' do @@ -137,8 +156,16 @@ class StaticTest < Test::Unit::TestCase request = Rack::MockRequest.new(@app) response = request.get("/#{File.basename(__FILE__)}", 'HTTP_RANGE' => http_range) - assert_equal 200,response.status, "Invalid range '#{http_range}' should be ignored" - assert_equal nil,response['Content-Range'], "Invalid range '#{http_range}' should be ignored" + assert_equal( + 200, + response.status, + "Invalid range '#{http_range}' should be ignored" + ) + assert_equal( + nil, + response['Content-Range'], + "Invalid range '#{http_range}' should be ignored" + ) end end @@ -149,8 +176,16 @@ class StaticTest < Test::Unit::TestCase request = Rack::MockRequest.new(@app) response = request.get("/#{File.basename(__FILE__)}", 'HTTP_RANGE' => http_range) - assert_equal 416,response.status, "Unsatisfiable range '#{http_range}' should return 416" - assert_equal "bytes */#{length}",response['Content-Range'], "416 response should include actual length" + assert_equal( + 416, + response.status, + "Unsatisfiable range '#{http_range}' should return 416" + ) + assert_equal( + "bytes */#{length}", + response['Content-Range'], + "416 response should include actual length" + ) end end @@ -167,11 +202,17 @@ class StaticTest < Test::Unit::TestCase assert headers.has_key?('Cache-Control') assert_equal headers['Cache-Control'], 'public' - @app.set :static_cache_control, [:public, :must_revalidate, {:max_age => 300}] + @app.set( + :static_cache_control, + [:public, :must_revalidate, {:max_age => 300}] + ) env = Rack::MockRequest.env_for("/#{File.basename(__FILE__)}") status, headers, body = @app.call(env) assert headers.has_key?('Cache-Control') - assert_equal headers['Cache-Control'], 'public, must-revalidate, max-age=300' + assert_equal( + headers['Cache-Control'], + 'public, must-revalidate, max-age=300' + ) end end diff --git a/test/streaming_test.rb b/test/streaming_test.rb index e7c62d26..df2bf7d3 100644 --- a/test/streaming_test.rb +++ b/test/streaming_test.rb @@ -5,7 +5,7 @@ class StreamingTest < Test::Unit::TestCase it 'returns the concatinated body' do mock_app do - get '/' do + get('/') do stream do |out| out << "Hello" << " " out << "World!" @@ -115,7 +115,9 @@ class StreamingTest < Test::Unit::TestCase it 'gives access to route specific params' do mock_app do - get('/:name') { stream { |o| o << params[:name] }} + get('/:name') do + stream { |o| o << params[:name] } + end end get '/foo' assert_body 'foo' diff --git a/test/templates_test.rb b/test/templates_test.rb index a692f649..5874862d 100644 --- a/test/templates_test.rb +++ b/test/templates_test.rb @@ -17,12 +17,12 @@ end class TemplatesTest < Test::Unit::TestCase def render_app(base=Sinatra::Base, options = {}, &block) base, options = Sinatra::Base, base if base.is_a? Hash - mock_app(base) { + mock_app(base) do set :views, File.dirname(__FILE__) + '/views' set options - get '/', &block + get('/', &block) template(:layout3) { "Layout 3!\n" } - } + end get '/' end @@ -35,26 +35,26 @@ class TemplatesTest < Test::Unit::TestCase end it 'renders String templates directly' do - render_app { render :test, 'Hello World' } + render_app { render(:test, 'Hello World') } assert ok? assert_equal 'Hello World', body end it 'renders Proc templates using the call result' do - render_app { render :test, Proc.new {'Hello World'} } + render_app { render(:test, Proc.new {'Hello World'}) } assert ok? assert_equal 'Hello World', body end it 'looks up Symbol templates in views directory' do - render_app { render :test, :hello } + render_app { render(:test, :hello) } assert ok? assert_equal "Hello World!\n", body end it 'uses the default layout template if not explicitly overridden' do with_default_layout do - render_app { render :test, :hello } + render_app { render(:test, :hello) } assert ok? assert_equal "Layout!\nHello World!\n", body end @@ -62,34 +62,40 @@ class TemplatesTest < Test::Unit::TestCase it 'uses the default layout template if not really overriden' do with_default_layout do - render_app { render :test, :hello, :layout => true } + render_app { render(:test, :hello, :layout => true) } assert ok? assert_equal "Layout!\nHello World!\n", body end end it 'uses the layout template specified' do - render_app { render :test, :hello, :layout => :layout2 } + render_app { render(:test, :hello, :layout => :layout2) } assert ok? assert_equal "Layout 2!\nHello World!\n", body end it 'uses layout templates defined with the #template method' do - render_app { render :test, :hello, :layout => :layout3 } + render_app { render(:test, :hello, :layout => :layout3) } assert ok? assert_equal "Layout 3!\nHello World!\n", body end it 'avoids wrapping layouts around nested templates' do - render_app { render :str, :nested, :layout => :layout2 } + render_app { render(:str, :nested, :layout => :layout2) } assert ok? - assert_equal "

String Layout!

\n

Hello From String

", body + assert_equal( + "

String Layout!

\n

Hello From String

", + body + ) end it 'allows explicitly wrapping layouts around nested templates' do - render_app { render :str, :explicitly_nested, :layout => :layout2 } + render_app { render(:str, :explicitly_nested, :layout => :layout2) } assert ok? - assert_equal "

String Layout!

\n

String Layout!

\n

Hello From String

", body + assert_equal( + "

String Layout!

\n

String Layout!

\n

Hello From String

", + body + ) end it 'two independent render calls do not disable layouts' do @@ -98,7 +104,10 @@ class TemplatesTest < Test::Unit::TestCase render :str, :nested, :layout => :layout2 end assert ok? - assert_equal "

String Layout!

\n

Hello From String

", body + assert_equal( + "

String Layout!

\n

Hello From String

", + body + ) end it 'is possible to use partials in layouts' do @@ -111,54 +120,50 @@ class TemplatesTest < Test::Unit::TestCase end it 'loads templates from source file' do - mock_app { enable :inline_templates } + mock_app { enable(:inline_templates) } assert_equal "this is foo\n\n", @app.templates[:foo][0] assert_equal "X\n= yield\nX\n", @app.templates[:layout][0] end it 'ignores spaces after names of inline templates' do - mock_app { enable :inline_templates } + mock_app { enable(:inline_templates) } assert_equal "There's a space after 'bar'!\n\n", @app.templates[:bar][0] assert_equal "this is not foo\n\n", @app.templates[:"foo bar"][0] end it 'loads templates from given source file' do - mock_app { set :inline_templates, __FILE__ } + mock_app { set(:inline_templates, __FILE__) } assert_equal "this is foo\n\n", @app.templates[:foo][0] end test 'inline_templates ignores IO errors' do - assert_nothing_raised { - mock_app { - set :inline_templates, '/foo/bar' - } - } + assert_nothing_raised { mock_app { set(:inline_templates, '/foo/bar') } } assert @app.templates.empty? end it 'allows unicode in inline templates' do - mock_app { set :inline_templates, __FILE__ } - assert_equal "Den som tror at hemma det är där man bor har aldrig vart hos mig.\n\n", + mock_app { set(:inline_templates, __FILE__) } + assert_equal( + "Den som tror at hemma det är där man bor har aldrig vart hos mig.\n\n", @app.templates[:umlaut][0] + ) end it 'loads templates from specified views directory' do - render_app { render :test, :hello, :views => settings.views + '/foo' } + render_app { render( :test, :hello, :views => settings.views + '/foo') } assert_equal "from another views directory\n", body end it 'passes locals to the layout' do - mock_app { - template :my_layout do - 'Hello <%= name %>!<%= yield %>' - end + mock_app do + template(:my_layout) { 'Hello <%= name %>!<%= yield %>' } - get '/' do - erb '

content

', { :layout => :my_layout }, { :name => 'Mike'} + get('/') do + erb('

content

', { :layout => :my_layout }, { :name => 'Mike'}) end - } + end get '/' assert ok? @@ -168,18 +173,22 @@ class TemplatesTest < Test::Unit::TestCase it 'loads templates defined in subclasses' do base = Class.new(Sinatra::Base) base.template(:foo) { 'bar' } - render_app(base) { render :test, :foo } + render_app(base) { render(:test, :foo) } assert ok? assert_equal 'bar', body end it 'allows setting default content type per template engine' do - render_app(:str => { :content_type => :txt }) { render :str, 'foo' } + render_app(:str => { :content_type => :txt }) { + render :str, 'foo' + } assert_equal 'text/plain;charset=utf-8', response['Content-Type'] end it 'setting default content type does not affect other template engines' do - render_app(:str => { :content_type => :txt }) { render :test, 'foo' } + render_app(:str => { :content_type => :txt }) { + render :test, 'foo' + } assert_equal 'text/html;charset=utf-8', response['Content-Type'] end @@ -196,11 +205,11 @@ class TemplatesTest < Test::Unit::TestCase base.template(:foo) { 'template in superclass' } assert_equal 'template in superclass', base.templates[:foo].first.call - mock_app(base) { + mock_app(base) do set :views, File.dirname(__FILE__) + '/views' template(:foo) { 'template in subclass' } get('/') { render :test, :foo } - } + end assert_equal 'template in subclass', @app.templates[:foo].first.call get '/' @@ -240,11 +249,9 @@ class TemplatesTest < Test::Unit::TestCase it "passes scope to the template" do mock_app do - template :scoped do - 'Hello <%= foo %>' - end + template(:scoped) { 'Hello <%= foo %>' } - get '/' do + get('/') do some_scope = Object.new def some_scope.foo() 'World!' end erb :scoped, :scope => some_scope @@ -263,9 +270,7 @@ class TemplatesTest < Test::Unit::TestCase Array(views).each { |v| super(v, name, engine, &block) } end - get('/:name') do - render :str, params[:name].to_sym - end + get('/:name') { render(:str, params[:name].to_sym) } end get '/in_a' diff --git a/test/textile_test.rb b/test/textile_test.rb index a3ed6f5a..907ce634 100644 --- a/test/textile_test.rb +++ b/test/textile_test.rb @@ -7,32 +7,32 @@ class TextileTest < Test::Unit::TestCase def textile_app(&block) mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block + get('/', &block) end get '/' end it 'renders inline textile strings' do - textile_app { textile 'h1. Hiya' } + textile_app { textile('h1. Hiya') } assert ok? assert_equal "

Hiya

", body end it 'renders .textile files in views path' do - textile_app { textile :hello } + textile_app { textile(:hello) } assert ok? assert_equal "

Hello From Textile

", body end it "raises error if template not found" do - mock_app { get('/') { textile :no_such_template } } + mock_app { get('/') { textile(:no_such_template) } } assert_raise(Errno::ENOENT) { get('/') } end it "renders with inline layouts" do mock_app do layout { 'THIS. IS. #{yield.upcase}!' } - get('/') { textile 'Sparta', :layout_engine => :str } + get('/') { textile('Sparta', :layout_engine => :str) } end get '/' assert ok? @@ -40,7 +40,9 @@ class TextileTest < Test::Unit::TestCase end it "renders with file layouts" do - textile_app { textile 'Hello World', :layout => :layout2, :layout_engine => :erb } + textile_app { + textile('Hello World', :layout => :layout2, :layout_engine => :erb) + } assert ok? assert_body "ERB Layout!\n

Hello World

" end @@ -49,9 +51,7 @@ class TextileTest < Test::Unit::TestCase mock_app do template(:inner) { "hi" } template(:outer) { "<%= textile :inner %>" } - get '/' do - erb :outer - end + get('/') { erb :outer } end get '/' diff --git a/test/yajl_test.rb b/test/yajl_test.rb index 546ee5a3..e10f764a 100644 --- a/test/yajl_test.rb +++ b/test/yajl_test.rb @@ -5,71 +5,77 @@ require 'yajl' class YajlTest < Test::Unit::TestCase def yajl_app(&block) - mock_app { + mock_app do set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } + get('/', &block) + end get '/' end it 'renders inline Yajl strings' do - yajl_app { yajl 'json = { :foo => "bar" }' } + yajl_app { yajl('json = { :foo => "bar" }') } assert ok? assert_body '{"foo":"bar"}' end it 'renders .yajl files in views path' do - yajl_app { yajl :hello } + yajl_app { yajl(:hello) } assert ok? assert_body '{"yajl":"hello"}' end it 'raises error if template not found' do - mock_app { - get('/') { yajl :no_such_template } - } + mock_app { get('/') { yajl(:no_such_template) } } assert_raise(Errno::ENOENT) { get('/') } end it 'accepts a :locals option' do - yajl_app { + yajl_app do locals = { :object => { :foo => 'bar' } } yajl 'json = object', :locals => locals - } + end assert ok? assert_body '{"foo":"bar"}' end it 'accepts a :scope option' do - yajl_app { + yajl_app do scope = { :object => { :foo => 'bar' } } yajl 'json = self[:object]', :scope => scope - } + end assert ok? assert_body '{"foo":"bar"}' end it 'decorates the json with a callback' do - yajl_app { - yajl 'json = { :foo => "bar" }', { :callback => 'baz' } - } + yajl_app do + yajl( + 'json = { :foo => "bar" }', + { :callback => 'baz' } + ) + end assert ok? assert_body 'baz({"foo":"bar"});' end it 'decorates the json with a variable' do - yajl_app { - yajl 'json = { :foo => "bar" }', { :variable => 'qux' } - } + yajl_app do + yajl( + 'json = { :foo => "bar" }', + { :variable => 'qux' } + ) + end assert ok? assert_body 'var qux = {"foo":"bar"};' end it 'decorates the json with a callback and a variable' do - yajl_app { - yajl 'json = { :foo => "bar" }', + yajl_app do + yajl( + 'json = { :foo => "bar" }', { :callback => 'baz', :variable => 'qux' } - } + ) + end assert ok? assert_body 'var qux = {"foo":"bar"}; baz(qux);' end