sinatra/test/helper.rb

84 lines
1.8 KiB
Ruby
Raw Normal View History

ENV['RACK_ENV'] = 'test'
Encoding.default_external = "UTF-8" if defined? Encoding
2011-02-21 10:54:26 +00:00
RUBY_ENGINE = 'ruby' unless defined? RUBY_ENGINE
begin
require 'rack'
rescue LoadError
require 'rubygems'
require 'rack'
end
testdir = File.dirname(__FILE__)
$LOAD_PATH.unshift testdir unless $LOAD_PATH.include?(testdir)
libdir = File.dirname(File.dirname(__FILE__)) + '/lib'
$LOAD_PATH.unshift libdir unless $LOAD_PATH.include?(libdir)
require 'contest'
require 'rack/test'
require 'sinatra/base'
class Sinatra::Base
# Allow assertions in request context
include Test::Unit::Assertions
end
Sinatra::Base.set :environment, :test
class Test::Unit::TestCase
include Rack::Test::Methods
class << self
alias_method :it, :test
end
alias_method :response, :last_response
setup do
Sinatra::Base.set :environment, :test
end
# Sets up a Sinatra::Base subclass defined with the block
# given. Used in setup or individual spec methods to establish
# the application.
def mock_app(base=Sinatra::Base, &block)
@app = Sinatra.new(base, &block)
end
def app
Rack::Lint.new(@app)
end
def body
response.body.to_s
end
2010-12-23 11:11:57 +00:00
def assert_body(value)
2010-12-24 15:46:18 +00:00
assert_equal value.lstrip.gsub(/\s*\n\s*/, ""), body.lstrip.gsub(/\s*\n\s*/, "")
2010-12-23 11:11:57 +00:00
end
# Delegate other missing methods to response.
def method_missing(name, *args, &block)
if response && response.respond_to?(name)
response.send(name, *args, &block)
else
super
end
end
# Also check response since we delegate there.
def respond_to?(symbol, include_private=false)
super || (response && response.respond_to?(symbol, include_private))
end
# Do not output warnings for the duration of the block.
def silence_warnings
$VERBOSE, v = nil, $VERBOSE
yield
ensure
$VERBOSE = v
end
end