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

- (Object) params

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

- (Object) render - (Object) render({:partial = > path_to_file}) - (Object) render({:partial = > path_to_file}, {... locals ...}) - (Object) render({:partial = > path_to_file}, {... locals ...})

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

- (Object) response

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

- (Object) stub_template(hash)

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

- (Object) template

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

- (Object) view

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