Methods

Attributes

[W] helper_class

Instance Public methods

determine_default_helper_class(name)

📝 Source code
# File actionview/lib/action_view/test_case.rb, line 164
        def determine_default_helper_class(name)
          determine_constant_from_test_name(name) do |constant|
            Module === constant && !(Class === constant)
          end
        end
🔎 See on GitHub

helper_class()

📝 Source code
# File actionview/lib/action_view/test_case.rb, line 184
        def helper_class
          @helper_class ||= determine_default_helper_class(name)
        end
🔎 See on GitHub

helper_method(*methods)

📝 Source code
# File actionview/lib/action_view/test_case.rb, line 170
        def helper_method(*methods)
          # Almost a duplicate from ActionController::Helpers
          methods.flatten.each do |method|
            _helpers_for_modification.module_eval <<~end_eval, __FILE__, __LINE__ + 1
              def #{method}(*args, &block)                    # def current_user(*args, &block)
                _test_case.send(:'#{method}', *args, &block)  #   _test_case.send(:'current_user', *args, &block)
              end                                             # end
              ruby2_keywords(:'#{method}')
            end_eval
          end
        end
🔎 See on GitHub

new(*)

📝 Source code
# File actionview/lib/action_view/test_case.rb, line 188
        def new(*)
          include_helper_modules!
          super
        end
🔎 See on GitHub

register_parser(format, callable = nil, &block)

Register a callable to parse rendered content for a given template format.

Each registered parser will also define a #rendered.[FORMAT] helper method, where [FORMAT] corresponds to the value of the format argument.

By default, ActionView::TestCase defines parsers for:

These pre-registered parsers also define corresponding helpers:

  • :html - defines rendered.html

  • :json - defines rendered.json

Parameters

format

The name (as a Symbol) of the format used to render the content.

callable

The parser. A callable object that accepts the rendered string as its sole argument. Alternatively, the parser can be specified as a block.

Examples

test "renders HTML" do
  article = Article.create!(title: "Hello, world")

  render partial: "articles/article", locals: { article: article }

  assert_pattern { rendered.html.at("main h1") => { content: "Hello, world" } }
end

test "renders JSON" do
  article = Article.create!(title: "Hello, world")

  render formats: :json, partial: "articles/article", locals: { article: article }

  assert_pattern { rendered.json => { title: "Hello, world" } }
end

To parse the rendered content into RSS, register a call to RSS::Parser.parse:

register_parser :rss, -> rendered { RSS::Parser.parse(rendered) }

test "renders RSS" do
  article = Article.create!(title: "Hello, world")

  render formats: :rss, partial: article

  assert_equal "Hello, world", rendered.rss.items.last.title
end

To parse the rendered content into a Capybara::Simple::Node, re-register an :html parser with a call to Capybara.string:

register_parser :html, -> rendered { Capybara.string(rendered) }

test "renders HTML" do
  article = Article.create!(title: "Hello, world")

  render partial: article

  rendered.html.assert_css "h1", text: "Hello, world"
end
📝 Source code
# File actionview/lib/action_view/test_case.rb, line 148
        def register_parser(format, callable = nil, &block)
          parser = callable || block || :itself.to_proc
          content_class.redefine_method(format) do
            parser.call(to_s)
          end
        end
🔎 See on GitHub

tests(helper_class)

📝 Source code
# File actionview/lib/action_view/test_case.rb, line 155
        def tests(helper_class)
          case helper_class
          when String, Symbol
            self.helper_class = "#{helper_class.to_s.underscore}_helper".camelize.safe_constantize
          when Module
            self.helper_class = helper_class
          end
        end
🔎 See on GitHub