diff options
-rw-r--r-- | actionpack/lib/action_controller/test_case.rb | 14 | ||||
-rw-r--r-- | actionview/lib/action_view/test_case.rb | 11 |
2 files changed, 20 insertions, 5 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index e6695ffc90..98ed1c2382 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -3,6 +3,9 @@ require 'active_support/core_ext/object/to_query' require 'active_support/core_ext/module/anonymous' require 'active_support/core_ext/hash/keys' +require 'loofah' +require 'rails-dom-testing' + module ActionController module TemplateAssertions extend ActiveSupport::Concern @@ -432,6 +435,7 @@ module ActionController extend ActiveSupport::Concern include ActionDispatch::TestProcess include ActiveSupport::Testing::ConstantLookup + include Rails::Dom::Testing::Assertions attr_reader :response, :request @@ -678,6 +682,16 @@ module ActionController end private + + def document_root_element + @html_document ||= if @response.content_type =~ /xml$/ + Loofah.xml_document(@response.body) + else + Loofah.document(@response.body) + end.root + end + + def check_required_ivars # Sanity check for required instance variables so we can give an # understandable error message. diff --git a/actionview/lib/action_view/test_case.rb b/actionview/lib/action_view/test_case.rb index ce1f763015..337fa0e840 100644 --- a/actionview/lib/action_view/test_case.rb +++ b/actionview/lib/action_view/test_case.rb @@ -3,6 +3,7 @@ require 'action_controller' require 'action_controller/test_case' require 'action_view' +require 'loofah' require 'rails-dom-testing' module ActionView @@ -154,11 +155,10 @@ module ActionView private - # Support the selector assertions - # # Need to experiment if this priority is the best one: rendered => output_buffer - def response_from_page - Loofah.document(@rendered.blank? ? @output_buffer : @rendered).root + def document_root_element + @html_document ||= Loofah.document(@rendered.blank? ? @output_buffer : @rendered) + @html_document.root end def say_no_to_protect_against_forgery! @@ -239,7 +239,8 @@ module ActionView :@test_passed, :@view, :@view_context_class, - :@_subscribers + :@_subscribers, + :@html_document ] def _user_defined_ivars |