Skip to content

Instantly share code, notes, and snippets.

@karmi
Forked from lifo/gist:25300
Created November 16, 2008 12:56
Show Gist options
  • Save karmi/25475 to your computer and use it in GitHub Desktop.
Save karmi/25475 to your computer and use it in GitHub Desktop.
Rails' `assigns` helper for Sinatra tests by lifo
$: << "/Users/lifo/Rails/sinatra/lib"
require 'rubygems'
require 'sinatra'
require 'sinatra/test/unit'
require 'app'
class Rack::Response
attr_accessor :variables
end
class Rack::MockResponse
attr_accessor :variables
def initialize_with_variables(status, headers, body, errors=StringIO.new(""))
self.variables = body.variables if body.respond_to?(:variables=)
initialize_without_variables(status, headers, body, errors)
end
alias_method :initialize_without_variables, :initialize
alias_method :initialize, :initialize_with_variables
def assigns(name)
variables["@#{name}"]
end
end
class Sinatra::EventContext
def finish
result = super
self.response.variables = {}
instance_variables.each do |var|
self.response.variables[var] = instance_variable_get(var)
end
result
end
end
class AppTest < Test::Unit::TestCase
def test_my_default
get_it '/'
assert_equal 'Hello Templates', @response.body
assert_equal 1, @response.assigns(:hello)
end
end
@NoamB
Copy link

NoamB commented Mar 17, 2011

Sinatra::EventContext does not exist in latest versions, so this example is outdated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment