Class Spec::Rails::Example::HelperExampleGroup

  1. lib/spec/rails/example/helper_example_group.rb

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

Methods

public class

  1. helper
  2. helper_name

public instance

  1. eval_erb
  2. flash
  3. helper
  4. orig_assigns
  5. protect_against_forgery?

protected instance

  1. _assigns_hash_proxy

Attributes

output_buffer [RW]

Public class methods

helper ()
[show source]
# File lib/spec/rails/example/helper_example_group.rb, line 58
          def helper
            @helper_object ||= returning HelperObject.new 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)

The helper name....

[show source]
# 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

Public instance methods

eval_erb (text)
[show source]
# 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
flash ()
[show source]
# File lib/spec/rails/example/helper_example_group.rb, line 121
        def flash
          @flash
        end
helper ()

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
[show source]
# File lib/spec/rails/example/helper_example_group.rb, line 89
        def helper
          self.class.helper
        end
orig_assigns ()
[show source]
# File lib/spec/rails/example/helper_example_group.rb, line 93
        def orig_assigns
          helper.assigns
        end
protect_against_forgery? ()

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

[show source]
# File lib/spec/rails/example/helper_example_group.rb, line 138
        def protect_against_forgery?
          false
        end

Protected instance methods

_assigns_hash_proxy ()
[show source]
# File lib/spec/rails/example/helper_example_group.rb, line 146
        def _assigns_hash_proxy
          @_assigns_hash_proxy ||= AssignsHashProxy.new(self) {helper}
        end