Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 2271

Show
Ignore:
Timestamp:
09/20/05 07:54:55 (3 years ago)
Author:
david
Message:

Optimized tag_options to not sort keys, which is no longer necessary when assert_dom_equal and friend is available #1995 [skae]. Added assert_dom_equal and assert_dom_not_equal to compare tags generated by the helpers in an order-indifferent manner #1995 [skae]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/CHANGELOG

    r2270 r2271  
    11*SVN* 
     2 
     3* Optimized tag_options to not sort keys, which is no longer necessary when assert_dom_equal and friend is available #1995 [skae] 
     4 
     5* Added assert_dom_equal and assert_dom_not_equal to compare tags generated by the helpers in an order-indifferent manner #1995 [skae] 
    26 
    37* Fixed that Request#domain caused an exception if the domain header wasn't set in the original http request #1795 [Michael Koziarski] 
  • trunk/actionpack/lib/action_controller/assertions.rb

    r1971 r2271  
    249249        assert !tag, "expected no tag, but found tag matching #{opts.inspect} in:\n#{@response.body.inspect}" 
    250250      end 
    251      
     251 
     252      # test 2 html strings to be equivalent, i.e. identical up to reordering of attributes 
     253      def assert_dom_equal(expected, actual, message="") 
     254        expected_dom = HTML::Document.new(expected).root 
     255        actual_dom = HTML::Document.new(actual).root 
     256        full_message = build_message(message, "<?> expected to be == to\n<?>.", expected_dom.to_s, actual_dom.to_s) 
     257        assert_block(full_message) { expected_dom == actual_dom } 
     258      end 
     259       
     260      # negated form of +assert_dom_equivalent+ 
     261      def assert_dom_not_equal(expected, actual, message="") 
     262        expected_dom = HTML::Document.new(expected).root 
     263        actual_dom = HTML::Document.new(actual).root 
     264        full_message = build_message(message, "<?> expected to be != to\n<?>.", expected_dom.to_s, actual_dom.to_s) 
     265        assert_block(full_message) { expected_dom != actual_dom } 
     266      end 
    252267    end 
    253268  end 
  • trunk/actionpack/lib/action_controller/base.rb

    r2229 r2271  
    839839 
    840840      def self.action_methods 
     841        #puts "action method: #{public_instance_methods.inspect}" 
    841842        @action_methods ||= (public_instance_methods - hidden_actions).inject({}) { |h, k| h[k] = true; h } 
    842843      end 
  • trunk/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb

    r2131 r2271  
    123123      Conditions === conditions ? conditions : Conditions.new(conditions) 
    124124    end 
     125 
     126    def ==(node) 
     127      return false unless self.class == node.class && children.size == node.children.size 
     128 
     129      equivalent = true 
     130 
     131      children.size.times do |i| 
     132        equivalent &&= children[i] == node.children[i] 
     133      end 
     134 
     135      equivalent 
     136    end 
    125137     
    126138    class <<self 
     
    239251      end 
    240252    end 
     253 
     254    def ==(node) 
     255      return false unless super 
     256      content == node.content 
     257    end 
    241258  end 
    242259 
     
    466483    end 
    467484 
     485    def ==(node) 
     486      return false unless super 
     487      return false unless closing == node.closing && self.name == node.name 
     488      attributes == node.attributes 
     489    end 
     490     
    468491    private 
    469  
    470492      # Match the given value to the given condition. 
    471493      def match_condition(value, condition) 
  • trunk/actionpack/lib/action_view/helpers/asset_tag_helper.rb

    r2156 r2271  
    122122          source = "/#{dir}/#{source}" unless source.first == "/" || source.include?(":") 
    123123          source = "#{source}.#{ext}" unless source.include?(".") 
    124           source = "#{@request.relative_url_root}#{source}" unless %r{^[-a-z]+://} =~ source 
     124          source = "#{@controller.request.relative_url_root}#{source}" unless %r{^[-a-z]+://} =~ source 
    125125          ActionController::Base.asset_host + source 
    126126        end 
  • trunk/actionpack/lib/action_view/helpers/tag_helper.rb

    r1789 r2271  
    1111      # * <tt>tag("br") => <br /></tt> 
    1212      # * <tt>tag("input", { "type" => "text"}) => <input type="text" /></tt> 
    13       def tag(name, options = {}, open = false) 
    14         "<#{name}#{tag_options(options)}" + (open ? ">" : " />") 
     13      def tag(name, options = nil, open = false) 
     14        "<#{name}#{tag_options(options.stringify_keys) if options}" + (open ? ">" : " />") 
    1515      end 
    1616 
     
    1919      # * <tt>content_tag("div", content_tag("p", "Hello world!"), "class" => "strong") => </tt> 
    2020      #   <tt><div class="strong"><p>Hello world!</p></div></tt> 
    21       def content_tag(name, content, options = {}
    22         "<#{name}#{tag_options(options)}>#{content}</#{name}>" 
     21      def content_tag(name, content, options = nil
     22        "<#{name}#{tag_options(options.stringify_keys) if options}>#{content}</#{name}>" 
    2323      end 
    2424 
    2525      private 
    2626        def tag_options(options) 
    27           cleaned_options = options.reject { |key, value| value.nil? } 
    28           unless cleaned_options.empty? 
    29             " " + cleaned_options.symbolize_keys.map { |key, value| 
    30               %(#{key}="#{html_escape(value.to_s)}") 
    31             }.sort.join(" ") 
     27          if options 
     28            options.inject("") do |html_str, (key, value)| 
     29              value.nil? ? html_str : html_str << %( #{key}="#{html_escape(value)}") 
     30            end 
    3231          end 
    3332        end 
  • trunk/actionpack/lib/action_view/helpers/url_helper.rb

    r2195 r2271  
    4040      #   link_to "Destroy account", { :action => "destroy" }, :confirm => "Are you sure?", :post => true 
    4141      def link_to(name, options = {}, html_options = nil, *parameters_for_method_reference) 
    42         html_options = (html_options || {}).stringify_key
    43         convert_options_to_javascript!(html_options) 
    44         if options.is_a?(String
    45           content_tag "a", name || options, (html_options || {}).merge("href" => options) 
     42        if html_option
     43          html_options = html_options.stringify_keys 
     44          convert_options_to_javascript!(html_options
     45          tag_options = tag_options(html_options) 
    4646        else 
    47           content_tag( 
    48             "a", name || url_for(options, *parameters_for_method_reference), 
    49             (html_options || {}).merge("href" => url_for(options, *parameters_for_method_reference)) 
    50           ) 
    51         end 
     47          tag_options = nil 
     48        end 
     49        url = options.is_a?(String) ? options : url_for(options, *parameters_for_method_reference) 
     50        "<a href=\"#{url}\"#{tag_options}>#{name||url}</a>" 
    5251      end 
    5352 
     
    237236      # Returns true if the current page uri is generated by the options passed (in url_for format). 
    238237      def current_page?(options) 
    239         url_for(options) == @request.request_uri 
     238        url_for(options) == @controller.request.request_uri 
    240239      end 
    241240 
  • trunk/actionpack/test/controller/base_test.rb

    r2243 r2271  
    6464    @non_empty_controllers = [Controllers::NonEmptyController.new, 
    6565                              Controllers::Submodule::ContainedNonEmptyController.new] 
    66    
    6766  end 
     67 
    6868  def test_action_methods 
    6969    @empty_controllers.each {|c| assert_equal({}, c.send(:action_methods), "#{c.class.controller_path} should be empty!")} 
  • trunk/actionpack/test/template/active_record_helper_test.rb

    r2193 r2271  
    6161 
    6262  def test_generic_input_tag 
    63     assert_equal( 
     63    assert_dom_equal( 
    6464      %(<input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />), input("post", "title") 
    6565    ) 
     
    6767   
    6868  def test_text_area_with_errors 
    69     assert_equal( 
     69    assert_dom_equal( 
    7070      %(<div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div>), 
    7171      text_area("post", "body") 
     
    7474 
    7575  def test_text_field_with_errors 
    76     assert_equal( 
     76    assert_dom_equal( 
    7777      %(<div class="fieldWithErrors"><input id="post_author_name" name="post[author_name]" size="30" type="text" value="" /></div>), 
    7878      text_field("post", "author_name") 
     
    8181   
    8282  def test_form_with_string 
    83     assert_equal( 
     83    assert_dom_equal( 
    8484      %(<form action="create" method="post"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>), 
    8585      form("post") 
     
    9191      def id() 1 end 
    9292    end 
    93     assert_equal( 
     93    assert_dom_equal( 
    9494      %(<form action="update/1" method="post"><input id="post_id" name="post[id]" type="hidden" value="1" /><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Update" /></form>), 
    9595      form("post") 
     
    100100    def Post.content_columns() [ Column.new(:date, "written_on", "Written on") ] end 
    101101 
    102     assert_equal( 
     102    assert_dom_equal( 
    103103      %(<form action="create" method="post"><p><label for="post_written_on">Written on</label><br /><select name="post[written_on(1i)]">\n<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n</select>\n<select name="post[written_on(2i)]">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select name="post[written_on(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n</p><input name="commit" type="submit" value="Create" /></form>), 
    104104      form("post") 
     
    110110    @post.written_on  = Time.gm(2004, 6, 15, 16, 30) 
    111111 
    112     assert_equal( 
     112    assert_dom_equal( 
    113113      %(<form action="create" method="post"><p><label for="post_written_on">Written on</label><br /><select name="post[written_on(1i)]">\n<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n</select>\n<select name="post[written_on(2i)]">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select name="post[written_on(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n &mdash; <select name="post[written_on(4i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select name="post[written_on(5i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30" selected="selected">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</p><input name="commit" type="submit" value="Create" /></form>), 
    114114      form("post") 
     
    117117   
    118118  def test_error_for_block 
    119     assert_equal %(<div class="errorExplanation" id="errorExplanation"><h2>1 error prohibited this post from being saved</h2><p>There were problems with the following fields:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post") 
     119    assert_dom_equal %(<div class="errorExplanation" id="errorExplanation"><h2>1 error prohibited this post from being saved</h2><p>There were problems with the following fields:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post") 
    120120    assert_equal %(<div class="errorDeathByClass" id="errorDeathById"><h1>1 error prohibited this post from being saved</h1><p>There were problems with the following fields:</p><ul><li>Author name can't be empty</li></ul></div>), error_messages_for("post", :class => "errorDeathByClass", :id => "errorDeathById", :header_tag => "h1") 
    121121  end 
    122122 
    123123  def test_form_with_string_multipart 
    124     assert_equal( 
     124    assert_dom_equal( 
    125125      %(<form action="create" enctype="multipart/form-data" method="post"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>), 
    126126      form("post", :multipart => true) 
  • trunk/actionpack/test/template/asset_tag_helper_test.rb

    r2156 r2271  
    99  def setup 
    1010    @controller = Class.new do 
     11 
     12      attr_accessor :request 
    1113     
    1214      def url_for(options, *parameters_for_method_reference) 
     
    2123      end        
    2224    end.new 
     25 
     26    @controller.request = @request 
    2327     
    2428  end 
     
    6872 
    6973  def test_auto_discovery 
    70     AutoDiscoveryToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     74    AutoDiscoveryToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    7175  end 
    7276 
    7377  def test_javascript_path 
    74     JavascriptPathToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     78    JavascriptPathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    7579  end 
    7680 
    7781  def test_javascript_include 
    78     JavascriptIncludeToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     82    JavascriptIncludeToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    7983  end 
    8084 
    8185  def test_style_path 
    82     StylePathToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     86    StylePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    8387  end 
    8488 
    8589  def test_style_link 
    86     StyleLinkToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     90    StyleLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    8791  end 
    8892 
    8993  def test_image_path 
    90     ImagePathToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     94    ImagePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    9195  end 
    9296 
    9397  def test_image_tag 
    94     ImageLinkToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     98    ImageLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    9599  end 
    96100   
     
    105109    @controller = Class.new do 
    106110     
     111      attr_accessor :request 
     112 
    107113      def url_for(options, *parameters_for_method_reference) 
    108114        "http://www.example.com/calloboration/hieraki" 
     
    117123    end.new 
    118124     
     125    @controller.request = @request 
     126 
    119127  end 
    120128 
     
    155163 
    156164  def test_auto_discovery 
    157     AutoDiscoveryToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     165    AutoDiscoveryToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    158166  end 
    159167 
    160168  def test_javascript_path 
    161     JavascriptPathToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     169    JavascriptPathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    162170  end 
    163171 
    164172  def test_javascript_include 
    165     JavascriptIncludeToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     173    JavascriptIncludeToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    166174  end 
    167175 
    168176  def test_style_path 
    169     StylePathToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     177    StylePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    170178  end 
    171179 
    172180  def test_style_link 
    173     StyleLinkToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     181    StyleLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    174182  end 
    175183 
    176184  def test_image_path 
    177     ImagePathToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     185    ImagePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    178186  end 
    179187   
    180188  def test_image_tag 
    181     ImageLinkToTag.each { |method, tag| assert_equal(tag, eval(method)) } 
     189    ImageLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } 
    182190    # Assigning a default alt tag should not cause an exception to be raised 
    183191    assert_nothing_raised { image_tag('') } 
  • trunk/actionpack/test/template/form_helper_test.rb

    r2179 r2271  
    3131 
    3232  def test_text_field 
    33     assert_equal( 
     33    assert_dom_equal( 
    3434      '<input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />', text_field("post", "title") 
    3535    ) 
    36     assert_equal( 
     36    assert_dom_equal( 
    3737      '<input id="post_title" name="post[title]" size="30" type="password" value="Hello World" />', password_field("post", "title") 
    3838    ) 
    39     assert_equal( 
     39    assert_dom_equal( 
    4040      '<input id="person_name" name="person[name]" size="30" type="password" />', password_field("person", "name") 
    4141    ) 
     
    4444  def test_text_field_with_escapes 
    4545    @post.title = "<b>Hello World</b>" 
    46     assert_equal( 
     46    assert_dom_equal( 
    4747      '<input id="post_title" name="post[title]" size="30" type="text" value="&lt;b&gt;Hello World&lt;/b&gt;" />', text_field("post", "title") 
    4848    ) 
     
    5151  def test_text_field_with_options 
    5252    expected = '<input id="post_title" name="post[title]" size="35" type="text" value="Hello World" />' 
    53     assert_equal expected, text_field("post", "title", "size" => 35) 
    54     assert_equal expected, text_field("post", "title", :size => 35) 
     53    assert_dom_equal expected, text_field("post", "title", "size" => 35) 
     54    assert_dom_equal expected, text_field("post", "title", :size => 35) 
    5555  end 
    5656 
    5757  def test_text_field_assuming_size 
    5858    expected = '<input id="post_title" maxlength="35" name="post[title]" size="35" type="text" value="Hello World" />' 
    59     assert_equal expected, text_field("post", "title", "maxlength" => 35) 
    60     assert_equal expected, text_field("post", "title", :maxlength => 35) 
     59    assert_dom_equal expected, text_field("post", "title", "maxlength" => 35) 
     60    assert_dom_equal expected, text_field("post", "title", :maxlength => 35) 
    6161  end 
    6262 
    6363  def test_check_box 
    64     assert_equal( 
     64    assert_dom_equal( 
    6565      '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 
    6666      check_box("post", "secret") 
    6767    ) 
    6868    @post.secret = 0 
    69     assert_equal( 
     69    assert_dom_equal( 
    7070      '<input id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 
    7171      check_box("post", "secret") 
    7272    ) 
    73     assert_equal( 
     73    assert_dom_equal( 
    7474      '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 
    7575      check_box("post", "secret" ,{"checked"=>"checked"}) 
    7676    ) 
    7777    @post.secret = true 
    78     assert_equal( 
     78    assert_dom_equal( 
    7979      '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 
    8080      check_box("post", "secret") 
     
    8484  def test_check_box_with_explicit_checked_and_unchecked_values 
    8585    @post.secret = "on" 
    86     assert_equal( 
     86    assert_dom_equal( 
    8787      '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="on" /><input name="post[secret]" type="hidden" value="off" />', 
    8888      check_box("post", "secret", {}, "on", "off") 
     
    9191 
    9292  def test_radio_button 
    93     assert_equal('<input checked="checked" id="post_title_hello_world" name="post[title]" type="radio" value="Hello World" />', 
     93    assert_dom_equal('<input checked="checked" id="post_title_hello_world" name="post[title]" type="radio" value="Hello World" />', 
    9494      radio_button("post", "title", "Hello World") 
    9595    ) 
    96     assert_equal('<input id="post_title_goodbye_world" name="post[title]" type="radio" value="Goodbye World" />', 
     96    assert_dom_equal('<input id="post_title_goodbye_world" name="post[title]" type="radio" value="Goodbye World" />', 
    9797      radio_button("post", "title", "Goodbye World") 
    9898    ) 
     
    100100 
    101101  def test_text_area 
    102     assert_equal( 
     102    assert_dom_equal( 
    103103      '<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea>', 
    104104      text_area("post", "body") 
     
    108108  def test_text_area_with_escapes 
    109109    @post.body        = "Back to <i>the</i> hill and over it again!" 
    110     assert_equal( 
     110    assert_dom_equal( 
    111111      '<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to &lt;i&gt;the&lt;/i&gt; hill and over it again!</textarea>', 
    112112      text_area("post", "body") 
     
    115115 
    116116  def test_date_selects 
    117     assert_equal( 
     117    assert_dom_equal( 
    118118      '<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea>', 
    119119      text_area("post", "body") 
     
    122122 
    123123  def test_explicit_name 
    124     assert_equal( 
     124    assert_dom_equal( 
    125125      '<input id="post_title" name="dont guess" size="30" type="text" value="Hello World" />', text_field("post", "title", "name" => "dont guess") 
    126126    ) 
    127     assert_equal( 
     127    assert_dom_equal( 
    128128      '<textarea cols="40" id="post_body" name="really!" rows="20">Back to the hill and over it again!</textarea>', 
    129129      text_area("post", "body", "name" => "really!") 
    130130    ) 
    131     assert_equal( 
     131    assert_dom_equal( 
    132132      '<input checked="checked" id="post_secret" name="i mean it" type="checkbox" value="1" /><input name="i mean it" type="hidden" value="0" />', 
    133133      check_box("post", "secret", "name" => "i mean it") 
    134134    ) 
    135     assert_equal text_field("post", "title", "name" => "dont guess"), 
     135    assert_dom_equal text_field("post", "title", "name" => "dont guess"), 
    136136                 text_field("post", "title", :name => "dont guess") 
    137     assert_equal text_area("post", "body", "name" => "really!"), 
     137    assert_dom_equal text_area("post", "body", "name" => "really!"), 
    138138                 text_area("post", "body", :name => "really!") 
    139     assert_equal check_box("post", "secret", "name" => "i mean it"), 
     139    assert_dom_equal check_box("post", "secret", "name" => "i mean it"), 
    140140                 check_box("post", "secret", :name => "i mean it") 
    141141  end 
    142142 
    143143  def test_explicit_id 
    144     assert_equal( 
     144    assert_dom_equal( 
    145145      '<input id="dont guess" name="post[title]" size="30" type="text" value="Hello World" />', text_field("post", "title", "id" => "dont guess") 
    146146    ) 
    147     assert_equal( 
     147    assert_dom_equal( 
    148148      '<textarea cols="40" id="really!" name="post[body]" rows="20">Back to the hill and over it again!</textarea>', 
    149149      text_area("post", "body", "id" => "really!") 
    150150    ) 
    151     assert_equal( 
     151    assert_dom_equal( 
    152152      '<input checked="checked" id="i mean it" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 
    153153      check_box("post", "secret", "id" => "i mean it") 
    154154    ) 
    155     assert_equal text_field("post", "title", "id" => "dont guess"), 
     155    assert_dom_equal text_field("post", "title", "id" => "dont guess"), 
    156156                 text_field("post", "title", :id => "dont guess") 
    157     assert_equal text_area("post", "body", "id" => "really!"), 
     157    assert_dom_equal text_area("post", "body", "id" => "really!"), 
    158158                 text_area("post", "body", :id => "really!") 
    159     assert_equal check_box("post", "secret", "id" => "i mean it"), 
     159    assert_dom_equal check_box("post", "secret", "id" => "i mean it"), 
    160160                 check_box("post", "secret", :id => "i mean it") 
    161161  end 
     
    163163  def test_auto_index 
    164164    pid = @post.id 
    165     assert_equal( 
     165    assert_dom_equal( 
    166166      "<input id=\"post_#{pid}_title\" name=\"post[#{pid}][title]\" size=\"30\" type=\"text\" value=\"Hello World\" />", text_field("post[]","title") 
    167167    ) 
    168     assert_equal( 
     168    assert_dom_equal( 
    169169      "<textarea cols=\"40\" id=\"post_#{pid}_body\" name=\"post[#{pid}][body]\" rows=\"20\">Back to the hill and over it again!</textarea>", 
    170170      text_area("post[]", "body") 
    171171    ) 
    172     assert_equal( 
     172    assert_dom_equal( 
    173173      "<input checked=\"checked\" id=\"post_#{pid}_secret\" name=\"post[#{pid}][secret]\" type=\"checkbox\" value=\"1\" /><input name=\"post[#{pid}][secret]\" type=\"hidden\" value=\"0\" />", 
    174174      check_box("post[]", "secret") 
    175175    ) 
    176    assert_equal( 
     176   assert_dom_equal( 
    177177"<input checked=\"checked\" id=\"post_#{pid}_title_hello_world\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Hello World\" />", 
    178178      radio_button("post[]", "title", "Hello World") 
    179179    ) 
    180     assert_equal("<input id=\"post_#{pid}_title_goodbye_world\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Goodbye World\" />", 
     180    assert_dom_equal("<input id=\"post_#{pid}_title_goodbye_world\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Goodbye World\" />", 
    181181      radio_button("post[]", "title", "Goodbye World") 
    182182    ) 
  • trunk/actionpack/test/template/form_options_helper_test.rb

    r2179 r2271  
    4040    ] 
    4141 
    42     assert_equal( 
     42    assert_dom_equal( 
    4343      "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>", 
    4444      options_from_collection_for_select(@posts, "author_name", "title") 
     
    5454    ] 
    5555 
    56     assert_equal( 
     56    assert_dom_equal( 
    5757      "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>", 
    5858      options_from_collection_for_select(@posts, "author_name", "title", "Babe") 
     
    6767      ] 
    6868 
    69       assert_equal( 
     69      assert_dom_equal( 
    7070        "<option value=\"&lt;Abe&gt;\">&lt;Abe&gt; went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>", 
    7171        options_from_collection_for_select(@posts, "author_name", "title", [ "Babe", "Cabe" ]) 
     
    7474 
    7575  def test_array_options_for_select 
    76     assert_equal( 
     76    assert_dom_equal( 
    7777      "<option value=\"&lt;Denmark&gt;\">&lt;Denmark&gt;</option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>", 
    7878      options_for_select([ "<Denmark>", "USA", "Sweden" ]) 
     
    8181 
    8282  def test_array_options_for_select_with_selection 
    83     assert_equal( 
     83    assert_dom_equal( 
    8484      "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" selected=\"selected\">&lt;USA&gt;</option>\n<option value=\"Sweden\">Sweden</option>", 
    8585      options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>") 
     
    8888 
    8989  def test_array_options_for_select_with_selection_array 
    90       assert_equal( 
     90      assert_dom_equal( 
    9191        "<option value=\"Denmark\">Denmark</option>\n<option value=\"&lt;USA&gt;\" selected=\"selected\">&lt;USA&gt;</option>\n<option value=\"Sweden\" selected=\"selected\">Sweden</option>", 
    9292        options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ]) 
     
    9595 
    9696  def test_array_options_for_string_include_in_other_string_bug_fix 
    97       assert_equal( 
     97      assert_dom_equal( 
    9898        "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>", 
    9999        options_for_select([ "ruby", "rubyonrails" ], "rubyonrails") 
    100100      ) 
    101       assert_equal( 
     101      assert_dom_equal( 
    102102        "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>", 
    103103        options_for_select([ "ruby", "rubyonrails" ], "ruby") 
     
    106106   
    107107  def test_hash_options_for_select 
    108     assert_equal( 
     108    assert_dom_equal( 
    109109      "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\">$</option>", 
    110110      options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }) 
     
    113113 
    114114  def test_hash_options_for_select_with_selection 
    115     assert_equal( 
     115    assert_dom_equal( 
    116116      "<option value=\"&lt;Kroner&gt;\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>", 
    117117      options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar") 
     
    120120 
    121121  def test_hash_options_for_select_with_selection 
    122     assert_equal( 
     122    assert_dom_equal( 
    123123      "<option value=\"&lt;Kroner&gt;\" selected=\"selected\">&lt;DKR&gt;</option>\n<option value=\"Dollar\" selected=\"selected\">$</option>", 
    124124      options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]) 
     
    132132    ] 
    133133 
    134     assert_equal( 
     134    assert_dom_equal( 
    135135      "<optgroup label=\"&lt;Africa&gt;\"><option value=\"&lt;sa&gt;\">&lt;South Africa&gt;</option>\n<option value=\"so\">Somalia</option></optgroup><optgroup label=\"Europe\"><option value=\"dk\" selected=\"selected\">Denmark</option>\n<option value=\"ie\">Ireland</option></optgroup>", 
    136136      option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk") 
     
    140140  def test_time_zone_options_no_parms 
    141141    opts = time_zone_options_for_select 
    142     assert_equal "<option value=\"A\">A</option>\n" + 
     142    assert_dom_equal "<option value=\"A\">A</option>\n" + 
    143143                 "<option value=\"B\">B</option>\n" + 
    144144                 "<option value=\"C\">C</option>\n" + 
     
    150150  def test_time_zone_options_with_selected 
    151151    opts = time_zone_options_for_select( "D" ) 
    152     assert_equal "<option value=\"A\">A</option>\n" + 
     152    assert_dom_equal "<option value=\"A\">A</option>\n" + 
    153153                 "<option value=\"B\">B</option>\n" + 
    154154                 "<option value=\"C\">C</option>\n" + 
     
    160160  def test_time_zone_options_with_unknown_selected 
    161161    opts = time_zone_options_for_select( "K" ) 
    162     assert_equal "<option value=\"A\">A</option>\n" + 
     162    assert_dom_equal "<option value=\"A\">A</option>\n" + 
    163163                 "<option value=\"B\">B</option>\n" + 
    164164                 "<option value=\"C\">C</option>\n" + 
     
    171171    zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] 
    172172    opts = time_zone_options_for_select( nil, zones ) 
    173     assert_equal "<option value=\"B\">B</option>\n" + 
     173    assert_dom_equal "<option value=\"B\">B</option>\n" + 
    174174                 "<option value=\"E\">E</option>" + 
    175175                 "<option value=\"\">-------------</option>\n" + 
     
    183183    zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] 
    184184    opts = time_zone_options_for_select( "E", zones ) 
    185     assert_equal "<option value=\"B\">B</option>\n" + 
     185    assert_dom_equal "<option value=\"B\">B</option>\n" + 
    186186                 "<option value=\"E\" selected=\"selected\">E</option>" + 
    187187                 "<option value=\"\">-------------</option>\n" + 
     
    195195    zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] 
    196196    opts = time_zone_options_for_select( "C", zones ) 
    197     assert_equal "<option value=\"B\">B</option>\n" + 
     197    assert_dom_equal "<option value=\"B\">B</option>\n" + 
    198198                 "<option value=\"E\">E</option>" + 
    199199                 "<option value=\"\">-------------</option>\n" + 
     
    207207    @post = Post.new 
    208208    @post.category = "<mus>" 
    209     assert_equal( 
     209    assert_dom_equal( 
    210210      "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>", 
    211211      select("post", "category", %w( abe <mus> hest)) 
     
    216216    @post = Post.new 
    217217    @post.category = "<mus>" 
    218     assert_equal( 
     218    assert_dom_equal( 
    219219      "<select id=\"post_category\" name=\"post[category]\"><option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>", 
    220220      select("post", "category", %w( abe <mus> hest), :include_blank => true) 
     
    225225    @post = Post.new 
    226226    @post.category = "" 
    227     assert_equal( 
     227    assert_dom_equal( 
    228228      "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>", 
    229229      select("post", "category", %w( abe <mus> hest), :prompt => true) 
     
    234234    @post = Post.new 
    235235    @post.category = "<mus>" 
    236     assert_equal( 
     236    assert_dom_equal( 
    237237      "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\" selected=\"selected\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>", 
    238238      select("post", "category", %w( abe <mus> hest), :prompt => true) 
     
    243243    @post = Post.new 
    244244    @post.category = "" 
    245     assert_equal( 
     245    assert_dom_equal( 
    246246      "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>", 
    247247      select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt') 
     
    252252    @post = Post.new 
    253253    @post.category = "" 
    254     assert_equal( 
     254    assert_dom_equal( 
    255255      "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"&lt;mus&gt;\">&lt;mus&gt;</option>\n<option value=\"hest\">hest</option></select>", 
    256256      select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true) 
     
    268268    @post.author_name = "Babe" 
    269269 
    270     assert_equal( 
     270    assert_dom_equal( 
    271271      "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>", 
    272272      collection_select("post", "author_name", @posts, "author_name", "author_name") 
     
    284284    @post.author_name = "Babe" 
    285285 
    286     assert_equal( 
     286    assert_dom_equal( 
    287287      "<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\"></option>\n<option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>", 
    288288      collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px") 
     
    293293    @post = Post.new 
    294294    @post.origin = "Denmark" 
    295     assert_equal( 
     295    assert_dom_equal( 
    296296      "<select id=\"post_origin\" name=\"post[origin]\"><option value=\"Afghanistan\">Afghanistan</option>\n<option value=\"Albania\">Albania</option>\n<option value=\"Algeria\">Algeria</option>\n<option value=\"American Samoa\">American Samoa</option>\n<option value=\"Andorra\">Andorra</option>\n<option value=\"Angola\">Angola</option>\n<option value=\"Anguilla\">Anguilla</option>\n<option value=\"Antarctica\">Antarctica</option>\n<option value=\"Antigua And Barbuda\">Antigua And Barbuda</option>\n<option value=\"Argentina\">Argentina</option>\n<option value=\"Armenia\">Armenia</option>\n<option value=\"Aruba\">Aruba</option>\n<option value=\"Australia\">Australia</option>\n<option value=\"Austria\">Austria</option>\n<option value=\"Azerbaijan\">Azerbaijan</option>\n<option value=\"Bahamas\">Bahamas</option>\n<option value=\"Bahrain\">Bahrain</option>\n<option value=\"Bangladesh\">Bangladesh</option>\n<option value=\"Barbados\">Barbados</option>\n<option value=\"Belarus\">Belarus</option>\n<option value=\"Belgium\">Belgium</option>\n<option value=\"Belize\">Belize</option>\n<option value=\"Benin\">Benin</option>\n<option value=\"Bermuda\">Bermuda</option>\n<option value=\"Bhutan\">Bhutan</option>\n<option value=\"Bolivia\">Bolivia</option>\n<option value=\"Bosnia and Herzegowina\">Bosnia and Herzegowina</option>\n<option value=\"Botswana\">Botswana</option>\n<option value=\"Bouvet Island\">Bouvet Island</option>\n<option value=\"Brazil\">Brazil</option>\n<option value=\"British Indian Ocean Territory\">British Indian Ocean Territory</option>\n<option value=\"Brunei Darussalam\">Brunei Darussalam</option>\n<option value=\"Bulgaria\">Bulgaria</option>\n<option value=\"Burkina Faso\">Burkina Faso</option>\n<option value=\"Burma\">Burma</option>\n<option value=\"Burundi\">Burundi</option>\n<option value=\"Cambodia\">Cambodia</option>\n<option value=\"Cameroon\">Cameroon</option>\n<option value=\"Canada\">Canada</option>\n<option value=\"Cape Verde\">Cape Verde</option>\n<option value=\"Cayman Islands\">Cayman Islands</option>\n<option value=\"Central African Republic\">Central African Republic</option>\n<option value=\"Chad\">Chad</option>\n<option value=\"Chile\">Chile</option>\n<option value=\"China\">China</option>\n<option value=\"Christmas Island\">Christmas Island</option>\n<option value=\"Cocos (Keeling) Islands\">Cocos (Keeling) Islands</option>\n<option value=\"Colombia\">Colombia</option>\n<option value=\"Comoros\">Comoros</option>\n<option value=\"Congo\">Congo</option>\n