Module: ActionView::TestCase::Behavior::ClassMethods
- Defined in:
 - actionview/lib/action_view/test_case.rb
 
Instance Attribute Summary collapse
Instance Method Summary collapse
- #determine_default_helper_class(name) ⇒ Object
 - #helper_method(*methods) ⇒ Object
 - 
  
    
      #inherited(descendant)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - #new ⇒ Object
 - 
  
    
      #register_parser(format, callable = nil, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Register a callable to parse rendered content for a given template format.
 - #tests(helper_class) ⇒ Object
 
Instance Attribute Details
#helper_class ⇒ Object
      183 184 185  | 
    
      # File 'actionview/lib/action_view/test_case.rb', line 183 def helper_class @helper_class ||= determine_default_helper_class(name) end  | 
  
Instance Method Details
#determine_default_helper_class(name) ⇒ Object
      164 165 166 167 168  | 
    
      # 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  | 
  
#helper_method(*methods) ⇒ Object
      170 171 172 173 174 175 176 177 178 179  | 
    
      # 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}(...) # def current_user(...) _test_case.send(:'#{method}', ...) # _test_case.send(:'current_user', ...) end # end end_eval end end  | 
  
#inherited(descendant) ⇒ Object
:nodoc:
      66 67 68 69 70 71 72 73 74 75 76  | 
    
      # File 'actionview/lib/action_view/test_case.rb', line 66 def inherited(descendant) # :nodoc: super descendant_content_class = content_class.dup if descendant_content_class.respond_to?(:set_temporary_name) descendant_content_class.set_temporary_name("rendered_content") end descendant.content_class = descendant_content_class end  | 
  
#new ⇒ Object
      187 188 189 190  | 
    
      # File 'actionview/lib/action_view/test_case.rb', line 187 def new(*) include_helper_modules! super end  | 
  
#register_parser(format, callable = nil, &block) ⇒ Object
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:
- 
:html- returns an instance ofNokogiri::XML::Node - 
:json- returns an instance of ActiveSupport::HashWithIndifferentAccess 
These pre-registered parsers also define corresponding helpers:
- 
:html- definesrendered.html - 
:json- definesrendered.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
  
      148 149 150 151 152 153  | 
    
      # 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  | 
  
#tests(helper_class) ⇒ Object
      155 156 157 158 159 160 161 162  | 
    
      # 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  |