Class: Spec::Rails::Example::FunctionalExampleGroup

Inherits:
ActionController::TestCase show all
Defined in:
lib/spec/rails/example/functional_example_group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ActionController::TestCase

#rescue_action_in_public!

Methods included from RoutingHelpers

#params_from, #route_for

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



11
12
13
# File 'lib/spec/rails/example/functional_example_group.rb', line 11

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



11
12
13
# File 'lib/spec/rails/example/functional_example_group.rb', line 11

def response
  @response
end

Instance Method Details

#assigns(key = nil) ⇒ Object

:call-seq:

assigns()

Hash of instance variables to values that are made available to views. == Examples

#in thing_controller.rb
def new
  @thing = Thing.new
end

#in thing_controller_spec
get 'new'
assigns[:registration].should == Thing.new

– NOTE - Even though docs only use assigns format, this supports assigns(:key) for backwards compatibility. ++



95
96
97
98
99
100
101
# File 'lib/spec/rails/example/functional_example_group.rb', line 95

def assigns(key = nil)
  if key.nil?
    _assigns_hash_proxy
  else
    _assigns_hash_proxy[key]
  end
end

#cookiesObject

Overrides the cookies() method in ActionController::TestResponseBehaviour, returning a proxy that accesses the requests cookies when setting a cookie and the responses cookies when reading one. This allows you to set and read cookies in examples using the same API with which you set and read them in controllers.

Examples (Rails 2.0 > 2.2)

cookies[:user_id] = {:value => '1234', :expires => 1.minute.ago}
get :index
response.should be_redirect

Examples (Rails 2.3)

Rails 2.3 changes the way cookies are made available to functional tests (and therefore rspec controller specs), only making single values available with no access to other aspects of the cookie. This is backwards-incompatible, so you have to change your examples to look like this:

cookies[:foo] = 'bar'
get :index
cookies[:foo].should == 'bar'


71
72
73
# File 'lib/spec/rails/example/functional_example_group.rb', line 71

def cookies
  @cookies ||= Spec::Rails::Example::CookiesProxy.new(self)
end

#flashObject

Provides access to the flash hash. Use this after rendering a view, calling a helper or calling a controller action.

Examples

post :create
flash[:notice].should == "Success!"


37
38
39
# File 'lib/spec/rails/example/functional_example_group.rb', line 37

def flash
  @controller.__send__ :flash
end

#orig_assignsObject



75
# File 'lib/spec/rails/example/functional_example_group.rb', line 75

alias_method :orig_assigns, :assigns

#paramsObject

The params hash accessed within a view or helper. Use this before rendering a view or calling a helper to provide data used by the view or helper.

Examples

# in a view spec
params[:name] = "David"
render
response.should have_tag("div.name","David")

# in a helper spec
params[:first_name] = "David"
params[:last_name] = "Chelimsky"
helper.full_name.should == "David Chelimsky"


27
28
29
# File 'lib/spec/rails/example/functional_example_group.rb', line 27

def params
  request.parameters
end

#sessionObject

Provides access to the session hash. Use this before or after rendering a view, calling a helper or calling a controller action.



43
44
45
# File 'lib/spec/rails/example/functional_example_group.rb', line 43

def session
  request.session
end

#setupObject



7
8
9
# File 'lib/spec/rails/example/functional_example_group.rb', line 7

def setup
  # no-op to override AC::TC's setup w/ conflicts with the before(:each) below
end