aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/testing/assertions/dom.rb
diff options
context:
space:
mode:
authorTimm <kaspth@gmail.com>2013-08-02 17:01:54 +0200
committerTimm <kaspth@gmail.com>2014-06-16 21:04:01 +0200
commit95c517b6d6c13bfff2a020b2a29ec5c9bacfebf3 (patch)
tree8e3622c9126cdb3e5688b4aec1d02a1290ab6b5b /actionpack/lib/action_dispatch/testing/assertions/dom.rb
parent9f73f9f38cd572cdb7bee42b0ef250c8bbd91cc7 (diff)
downloadrails-95c517b6d6c13bfff2a020b2a29ec5c9bacfebf3.tar.gz
rails-95c517b6d6c13bfff2a020b2a29ec5c9bacfebf3.tar.bz2
rails-95c517b6d6c13bfff2a020b2a29ec5c9bacfebf3.zip
Moved Dom and Selector assertions from ActionDispatch to ActionView.
Diffstat (limited to 'actionpack/lib/action_dispatch/testing/assertions/dom.rb')
-rw-r--r--actionpack/lib/action_dispatch/testing/assertions/dom.rb75
1 files changed, 2 insertions, 73 deletions
diff --git a/actionpack/lib/action_dispatch/testing/assertions/dom.rb b/actionpack/lib/action_dispatch/testing/assertions/dom.rb
index 4a05e4aee3..53d1b198e6 100644
--- a/actionpack/lib/action_dispatch/testing/assertions/dom.rb
+++ b/actionpack/lib/action_dispatch/testing/assertions/dom.rb
@@ -1,74 +1,3 @@
-require 'loofah'
+require 'active_support/deprecation'
-module ActionDispatch
- module Assertions
- module DomAssertions
- # \Test two HTML strings for equivalency (e.g., equal even when attributes are in another order)
- #
- # # assert that the referenced method generates the appropriate HTML string
- # assert_dom_equal '<a href="http://www.example.com">Apples</a>', link_to("Apples", "http://www.example.com")
- def assert_dom_equal(expected, actual, message = nil)
- expected_dom, actual_dom = doms_from_strings(expected, actual)
- message ||= "Expected: #{expected_dom}\nActual: #{actual_dom}"
- assert compare_doms(expected_dom, actual_dom), message
- end
-
- # The negated form of +assert_dom_equal+.
- #
- # # assert that the referenced method does not generate the specified HTML string
- # assert_dom_not_equal '<a href="http://www.example.com">Apples</a>', link_to("Oranges", "http://www.example.com")
- def assert_dom_not_equal(expected, actual, message = nil)
- expected_dom, actual_dom = doms_from_strings(expected, actual)
- message ||= "Expected: #{expected_dom}\nActual: #{actual_dom}"
- assert_not compare_doms(expected_dom, actual_dom), message
- end
-
- protected
- # +doms_from_strings+ creates a Loofah::HTML::DocumentFragment for every string in strings
- def doms_from_strings(*strings)
- strings.map { |str| Loofah.fragment(str) }
- end
-
- # +compare_doms+ takes two doms loops over all their children and compares each child via +equal_children?+
- def compare_doms(expected, actual)
- expected.children.each_with_index do |child, i|
- return false unless equal_children?(child, actual.children[i])
- end
- true
- end
-
- # +equal_children?+ compares children according to their type
- # Determines further comparison via said type
- # i.e. element node children with equal names has their attributes compared using +attributes_are_equal?+
- def equal_children?(child, other_child)
- return false unless child.type == other_child.type
-
- case child.type
- when Nokogiri::XML::Node::ELEMENT_NODE
- child.name == other_child.name && attributes_are_equal?(child, other_child)
- else
- child.to_s == other_child.to_s
- end
- end
-
- # +attributes_are_equal?+ sorts elements attributes by name and compares
- # each attribute by calling +equal_attribute?+
- # If those are +true+ the attributes are considered equal
- def attributes_are_equal?(element, other_element)
- first_nodes = element.attribute_nodes.sort_by { |a| a.name }
- other_nodes = other_element.attribute_nodes.sort_by { |a| a.name }
-
- return false unless first_nodes.size == other_nodes.size
- first_nodes.each_with_index do |attr, i|
- return false unless equal_attribute?(attr, other_nodes[i])
- end
- true
- end
-
- # +equal_attribute?+ compares attributes by their name and value
- def equal_attribute?(attr, other_attr)
- attr.name == other_attr.name && attr.value == other_attr.value
- end
- end
- end
-end
+ActiveSupport::Deprecation.warn("ActionDispatch::Assertions::DomAssertions has been moved to ActionView. You can find it in action_view/testing/assertions/dom.rb.") \ No newline at end of file