Module: RSpec::Rails::ViewExampleGroup::ExampleMethods Private

Defined in:
lib/rspec/rails/example/view_example_group.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

DSL exposed to view specs.

Instance Method Summary collapse

Instance Method Details

#paramsObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Provides access to the params hash that will be available within the view.

params[:foo] = 'bar'


81
82
83
# File 'lib/rspec/rails/example/view_example_group.rb', line 81

def params
  controller.params
end

#renderObject #render({: partial => path_to_file}) ⇒ Object #render({: partial => path_to_file}, {... locals ...}) ⇒ Object #render({: partial => path_to_file}, {... locals ...}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Delegates to ActionView::Base#render, so see documentation on that for more info.

The only addition is that you can call render with no arguments, and RSpec will pass the top level description to render:

describe "widgets/new.html.erb" do
  it "shows all the widgets" do
    render # => view.render(:file => "widgets/new.html.erb")
    # ...
  end
end


48
49
50
51
# File 'lib/rspec/rails/example/view_example_group.rb', line 48

def render(options = {}, local_assigns = {}, &block)
  options = _default_render_options if Hash === options && options.empty?
  super(options, local_assigns, &block)
end

#responseObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Deprecated.

Use rendered instead.



92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/rspec/rails/example/view_example_group.rb', line 92

def response
  # `assert_template` expects `response` to implement a #body method
  # like an `ActionDispatch::Response` does to force the view to
  # render. For backwards compatibility, we use #response as an alias
  # for #rendered, but it needs to implement #body to avoid
  # `assert_template` raising a `NoMethodError`.
  unless rendered.respond_to?(:body)
    def rendered.body
      self
    end
  end

  rendered
end

#stub_template(hash) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Simulates the presence of a template on the file system by adding a Rails' FixtureResolver to the front of the view_paths list. Designed to help isolate view examples from partials rendered by the view template that is the subject of the example.

stub_template("widgets/_widget.html.erb" => "This content.")


73
74
75
# File 'lib/rspec/rails/example/view_example_group.rb', line 73

def stub_template(hash)
  view.view_paths.unshift(ActionView::FixtureResolver.new(hash))
end

#templateObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Deprecated.

Use view instead.



86
87
88
89
# File 'lib/rspec/rails/example/view_example_group.rb', line 86

def template
  RSpec.deprecate("template", :replacement => "view")
  view
end

#viewObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The instance of ActionView::Base that is used to render the template. Use this to stub methods before calling render.

describe "widgets/new.html.erb" do
  it "shows all the widgets" do
    view.stub(:foo) { "foo" }
    render
    # ...
  end
end


63
64
65
# File 'lib/rspec/rails/example/view_example_group.rb', line 63

def view
  _view
end