Class: Spec::Rails::Example::HelperExampleGroup

Inherits:
FunctionalExampleGroup show all
Defined in:
lib/spec/rails/example/helper_example_group.rb

Overview

Helper Specs live in $RAILS_ROOT/spec/helpers/.

Helper Specs use Spec::Rails::Example::HelperExampleGroup, which allows you to include your Helper directly in the context and write specs directly against its methods.

HelperExampleGroup also includes the standard lot of ActionView::Helpers in case your helpers rely on any of those.

Example

module ThingHelper
  def number_of_things
    Thing.count
  end
end

describe "ThingHelper example_group" do
  include ThingHelper
  it "should tell you the number of things" do
    Thing.should_receive(:count).and_return(37)
    number_of_things.should == 37
  end
end

Defined Under Namespace

Classes: HelperObject

Instance Attribute Summary collapse

Attributes inherited from FunctionalExampleGroup

#request, #response

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from FunctionalExampleGroup

#assigns, #cookies, #params, #session, #setup

Methods inherited from ActionController::TestCase

#rescue_action_in_public!

Methods included from RoutingHelpers

#params_from, #route_for

Instance Attribute Details

#output_bufferObject

Returns the value of attribute output_buffer.



34
35
36
# File 'lib/spec/rails/example/helper_example_group.rb', line 34

def output_buffer
  @output_buffer
end

Class Method Details

.helperObject



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/spec/rails/example/helper_example_group.rb', line 58

def helper
  HelperObject.new.tap do |helper_object|
    if @helper_being_described.nil?
      if described_type.class == Module
        helper_object.extend described_type
      end
    else
      helper_object.extend @helper_being_described
    end
  end
end

.helper_name(name = nil) ⇒ Object

The helper name.…



53
54
55
56
# File 'lib/spec/rails/example/helper_example_group.rb', line 53

def helper_name(name=nil)
  @helper_being_described = "#{name}_helper".camelize.constantize
  send :include, @helper_being_described
end

Instance Method Details

#eval_erb(text) ⇒ Object



125
126
127
128
129
130
131
132
133
134
# File 'lib/spec/rails/example/helper_example_group.rb', line 125

def eval_erb(text)
  erb_args = [text]
  if helper.respond_to?(:output_buffer)
    erb_args += [nil, nil, '@output_buffer']
  end
  
  helper.instance_eval do
    ERB.new(*erb_args).result(binding)
  end
end

#flashObject



121
122
123
# File 'lib/spec/rails/example/helper_example_group.rb', line 121

def flash
  @flash
end

#helperObject

Returns an instance of ActionView::Base with the helper being spec’d included.

Example

describe PersonHelper do
  it "should write a link to person with the name" do
    assigns[:person] = mock_model(Person, :full_name => "Full Name", :id => 37, :new_record? => false)
    helper.link_to_person.should == %{<a href="/people/37">Full Name</a>}
  end
end

module PersonHelper
  def link_to_person
    link_to person.full_name, url_for(person)
  end
end


89
90
91
# File 'lib/spec/rails/example/helper_example_group.rb', line 89

def helper
  @helper ||= self.class.helper
end

#orig_assignsObject



93
94
95
# File 'lib/spec/rails/example/helper_example_group.rb', line 93

def orig_assigns
  helper.assigns
end

#protect_against_forgery?Boolean

TODO: BT - Helper Examples should proxy method_missing to a Rails View instance. When that is done, remove this method

Returns:

  • (Boolean)


138
139
140
# File 'lib/spec/rails/example/helper_example_group.rb', line 138

def protect_against_forgery?
  false
end