Changeset 2271
- Timestamp:
- 09/20/05 07:54:55 (3 years ago)
- Files:
-
- trunk/actionpack/CHANGELOG (modified) (1 diff)
- trunk/actionpack/lib/action_controller/assertions.rb (modified) (1 diff)
- trunk/actionpack/lib/action_controller/base.rb (modified) (1 diff)
- trunk/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb (modified) (3 diffs)
- trunk/actionpack/lib/action_view/helpers/asset_tag_helper.rb (modified) (1 diff)
- trunk/actionpack/lib/action_view/helpers/tag_helper.rb (modified) (2 diffs)
- trunk/actionpack/lib/action_view/helpers/url_helper.rb (modified) (2 diffs)
- trunk/actionpack/test/controller/base_test.rb (modified) (1 diff)
- trunk/actionpack/test/template/active_record_helper_test.rb (modified) (8 diffs)
- trunk/actionpack/test/template/asset_tag_helper_test.rb (modified) (6 diffs)
- trunk/actionpack/test/template/form_helper_test.rb (modified) (10 diffs)
- trunk/actionpack/test/template/form_options_helper_test.rb (modified) (32 diffs)
- trunk/actionpack/test/template/form_tag_helper_test.rb (modified) (11 diffs)
- trunk/actionpack/test/template/java_script_macros_helper_test.rb (modified) (2 diffs)
- trunk/actionpack/test/template/javascript_helper_test.rb (modified) (6 diffs)
- trunk/actionpack/test/template/upload_progress_helper_testx.rb (modified) (5 diffs)
- trunk/actionpack/test/template/url_helper_test.rb (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack/CHANGELOG
r2270 r2271 1 1 *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] 2 6 3 7 * 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 249 249 assert !tag, "expected no tag, but found tag matching #{opts.inspect} in:\n#{@response.body.inspect}" 250 250 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 252 267 end 253 268 end trunk/actionpack/lib/action_controller/base.rb
r2229 r2271 839 839 840 840 def self.action_methods 841 #puts "action method: #{public_instance_methods.inspect}" 841 842 @action_methods ||= (public_instance_methods - hidden_actions).inject({}) { |h, k| h[k] = true; h } 842 843 end trunk/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb
r2131 r2271 123 123 Conditions === conditions ? conditions : Conditions.new(conditions) 124 124 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 125 137 126 138 class <<self … … 239 251 end 240 252 end 253 254 def ==(node) 255 return false unless super 256 content == node.content 257 end 241 258 end 242 259 … … 466 483 end 467 484 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 468 491 private 469 470 492 # Match the given value to the given condition. 471 493 def match_condition(value, condition) trunk/actionpack/lib/action_view/helpers/asset_tag_helper.rb
r2156 r2271 122 122 source = "/#{dir}/#{source}" unless source.first == "/" || source.include?(":") 123 123 source = "#{source}.#{ext}" unless source.include?(".") 124 source = "#{@ request.relative_url_root}#{source}" unless %r{^[-a-z]+://} =~ source124 source = "#{@controller.request.relative_url_root}#{source}" unless %r{^[-a-z]+://} =~ source 125 125 ActionController::Base.asset_host + source 126 126 end trunk/actionpack/lib/action_view/helpers/tag_helper.rb
r1789 r2271 11 11 # * <tt>tag("br") => <br /></tt> 12 12 # * <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 ? ">" : " />") 15 15 end 16 16 … … 19 19 # * <tt>content_tag("div", content_tag("p", "Hello world!"), "class" => "strong") => </tt> 20 20 # <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}>" 23 23 end 24 24 25 25 private 26 26 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 32 31 end 33 32 end trunk/actionpack/lib/action_view/helpers/url_helper.rb
r2195 r2271 40 40 # link_to "Destroy account", { :action => "destroy" }, :confirm => "Are you sure?", :post => true 41 41 def link_to(name, options = {}, html_options = nil, *parameters_for_method_reference) 42 html_options = (html_options || {}).stringify_keys43 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_options 43 html_options = html_options.stringify_keys 44 convert_options_to_javascript!(html_options) 45 tag_options = tag_options(html_options) 46 46 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>" 52 51 end 53 52 … … 237 236 # Returns true if the current page uri is generated by the options passed (in url_for format). 238 237 def current_page?(options) 239 url_for(options) == @ request.request_uri238 url_for(options) == @controller.request.request_uri 240 239 end 241 240 trunk/actionpack/test/controller/base_test.rb
r2243 r2271 64 64 @non_empty_controllers = [Controllers::NonEmptyController.new, 65 65 Controllers::Submodule::ContainedNonEmptyController.new] 66 67 66 end 67 68 68 def test_action_methods 69 69 @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 61 61 62 62 def test_generic_input_tag 63 assert_ equal(63 assert_dom_equal( 64 64 %(<input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />), input("post", "title") 65 65 ) … … 67 67 68 68 def test_text_area_with_errors 69 assert_ equal(69 assert_dom_equal( 70 70 %(<div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div>), 71 71 text_area("post", "body") … … 74 74 75 75 def test_text_field_with_errors 76 assert_ equal(76 assert_dom_equal( 77 77 %(<div class="fieldWithErrors"><input id="post_author_name" name="post[author_name]" size="30" type="text" value="" /></div>), 78 78 text_field("post", "author_name") … … 81 81 82 82 def test_form_with_string 83 assert_ equal(83 assert_dom_equal( 84 84 %(<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>), 85 85 form("post") … … 91 91 def id() 1 end 92 92 end 93 assert_ equal(93 assert_dom_equal( 94 94 %(<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>), 95 95 form("post") … … 100 100 def Post.content_columns() [ Column.new(:date, "written_on", "Written on") ] end 101 101 102 assert_ equal(102 assert_dom_equal( 103 103 %(<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>), 104 104 form("post") … … 110 110 @post.written_on = Time.gm(2004, 6, 15, 16, 30) 111 111 112 assert_ equal(112 assert_dom_equal( 113 113 %(<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 — <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>), 114 114 form("post") … … 117 117 118 118 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") 120 120 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") 121 121 end 122 122 123 123 def test_form_with_string_multipart 124 assert_ equal(124 assert_dom_equal( 125 125 %(<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>), 126 126 form("post", :multipart => true) trunk/actionpack/test/template/asset_tag_helper_test.rb
r2156 r2271 9 9 def setup 10 10 @controller = Class.new do 11 12 attr_accessor :request 11 13 12 14 def url_for(options, *parameters_for_method_reference) … … 21 23 end 22 24 end.new 25 26 @controller.request = @request 23 27 24 28 end … … 68 72 69 73 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)) } 71 75 end 72 76 73 77 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)) } 75 79 end 76 80 77 81 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)) } 79 83 end 80 84 81 85 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)) } 83 87 end 84 88 85 89 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)) } 87 91 end 88 92 89 93 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)) } 91 95 end 92 96 93 97 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)) } 95 99 end 96 100 … … 105 109 @controller = Class.new do 106 110 111 attr_accessor :request 112 107 113 def url_for(options, *parameters_for_method_reference) 108 114 "http://www.example.com/calloboration/hieraki" … … 117 123 end.new 118 124 125 @controller.request = @request 126 119 127 end 120 128 … … 155 163 156 164 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)) } 158 166 end 159 167 160 168 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)) } 162 170 end 163 171 164 172 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)) } 166 174 end 167 175 168 176 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)) } 170 178 end 171 179 172 180 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)) } 174 182 end 175 183 176 184 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)) } 178 186 end 179 187 180 188 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)) } 182 190 # Assigning a default alt tag should not cause an exception to be raised 183 191 assert_nothing_raised { image_tag('') } trunk/actionpack/test/template/form_helper_test.rb
r2179 r2271 31 31 32 32 def test_text_field 33 assert_ equal(33 assert_dom_equal( 34 34 '<input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />', text_field("post", "title") 35 35 ) 36 assert_ equal(36 assert_dom_equal( 37 37 '<input id="post_title" name="post[title]" size="30" type="password" value="Hello World" />', password_field("post", "title") 38 38 ) 39 assert_ equal(39 assert_dom_equal( 40 40 '<input id="person_name" name="person[name]" size="30" type="password" />', password_field("person", "name") 41 41 ) … … 44 44 def test_text_field_with_escapes 45 45 @post.title = "<b>Hello World</b>" 46 assert_ equal(46 assert_dom_equal( 47 47 '<input id="post_title" name="post[title]" size="30" type="text" value="<b>Hello World</b>" />', text_field("post", "title") 48 48 ) … … 51 51 def test_text_field_with_options 52 52 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) 55 55 end 56 56 57 57 def test_text_field_assuming_size 58 58 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) 61 61 end 62 62 63 63 def test_check_box 64 assert_ equal(64 assert_dom_equal( 65 65 '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 66 66 check_box("post", "secret") 67 67 ) 68 68 @post.secret = 0 69 assert_ equal(69 assert_dom_equal( 70 70 '<input id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 71 71 check_box("post", "secret") 72 72 ) 73 assert_ equal(73 assert_dom_equal( 74 74 '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 75 75 check_box("post", "secret" ,{"checked"=>"checked"}) 76 76 ) 77 77 @post.secret = true 78 assert_ equal(78 assert_dom_equal( 79 79 '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 80 80 check_box("post", "secret") … … 84 84 def test_check_box_with_explicit_checked_and_unchecked_values 85 85 @post.secret = "on" 86 assert_ equal(86 assert_dom_equal( 87 87 '<input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="on" /><input name="post[secret]" type="hidden" value="off" />', 88 88 check_box("post", "secret", {}, "on", "off") … … 91 91 92 92 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" />', 94 94 radio_button("post", "title", "Hello World") 95 95 ) 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" />', 97 97 radio_button("post", "title", "Goodbye World") 98 98 ) … … 100 100 101 101 def test_text_area 102 assert_ equal(102 assert_dom_equal( 103 103 '<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea>', 104 104 text_area("post", "body") … … 108 108 def test_text_area_with_escapes 109 109 @post.body = "Back to <i>the</i> hill and over it again!" 110 assert_ equal(110 assert_dom_equal( 111 111 '<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to <i>the</i> hill and over it again!</textarea>', 112 112 text_area("post", "body") … … 115 115 116 116 def test_date_selects 117 assert_ equal(117 assert_dom_equal( 118 118 '<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea>', 119 119 text_area("post", "body") … … 122 122 123 123 def test_explicit_name 124 assert_ equal(124 assert_dom_equal( 125 125 '<input id="post_title" name="dont guess" size="30" type="text" value="Hello World" />', text_field("post", "title", "name" => "dont guess") 126 126 ) 127 assert_ equal(127 assert_dom_equal( 128 128 '<textarea cols="40" id="post_body" name="really!" rows="20">Back to the hill and over it again!</textarea>', 129 129 text_area("post", "body", "name" => "really!") 130 130 ) 131 assert_ equal(131 assert_dom_equal( 132 132 '<input checked="checked" id="post_secret" name="i mean it" type="checkbox" value="1" /><input name="i mean it" type="hidden" value="0" />', 133 133 check_box("post", "secret", "name" => "i mean it") 134 134 ) 135 assert_ equal text_field("post", "title", "name" => "dont guess"),135 assert_dom_equal text_field("post", "title", "name" => "dont guess"), 136 136 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!"), 138 138 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"), 140 140 check_box("post", "secret", :name => "i mean it") 141 141 end 142 142 143 143 def test_explicit_id 144 assert_ equal(144 assert_dom_equal( 145 145 '<input id="dont guess" name="post[title]" size="30" type="text" value="Hello World" />', text_field("post", "title", "id" => "dont guess") 146 146 ) 147 assert_ equal(147 assert_dom_equal( 148 148 '<textarea cols="40" id="really!" name="post[body]" rows="20">Back to the hill and over it again!</textarea>', 149 149 text_area("post", "body", "id" => "really!") 150 150 ) 151 assert_ equal(151 assert_dom_equal( 152 152 '<input checked="checked" id="i mean it" name="post[secret]" type="checkbox" value="1" /><input name="post[secret]" type="hidden" value="0" />', 153 153 check_box("post", "secret", "id" => "i mean it") 154 154 ) 155 assert_ equal text_field("post", "title", "id" => "dont guess"),155 assert_dom_equal text_field("post", "title", "id" => "dont guess"), 156 156 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!"), 158 158 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"), 160 160 check_box("post", "secret", :id => "i mean it") 161 161 end … … 163 163 def test_auto_index 164 164 pid = @post.id 165 assert_ equal(165 assert_dom_equal( 166 166 "<input id=\"post_#{pid}_title\" name=\"post[#{pid}][title]\" size=\"30\" type=\"text\" value=\"Hello World\" />", text_field("post[]","title") 167 167 ) 168 assert_ equal(168 assert_dom_equal( 169 169 "<textarea cols=\"40\" id=\"post_#{pid}_body\" name=\"post[#{pid}][body]\" rows=\"20\">Back to the hill and over it again!</textarea>", 170 170 text_area("post[]", "body") 171 171 ) 172 assert_ equal(172 assert_dom_equal( 173 173 "<input checked=\"checked\" id=\"post_#{pid}_secret\" name=\"post[#{pid}][secret]\" type=\"checkbox\" value=\"1\" /><input name=\"post[#{pid}][secret]\" type=\"hidden\" value=\"0\" />", 174 174 check_box("post[]", "secret") 175 175 ) 176 assert_ equal(176 assert_dom_equal( 177 177 "<input checked=\"checked\" id=\"post_#{pid}_title_hello_world\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Hello World\" />", 178 178 radio_button("post[]", "title", "Hello World") 179 179 ) 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\" />", 181 181 radio_button("post[]", "title", "Goodbye World") 182 182 ) trunk/actionpack/test/template/form_options_helper_test.rb
r2179 r2271 40 40 ] 41 41 42 assert_ equal(42 assert_dom_equal( 43 43 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>", 44 44 options_from_collection_for_select(@posts, "author_name", "title") … … 54 54 ] 55 55 56 assert_ equal(56 assert_dom_equal( 57 57 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>", 58 58 options_from_collection_for_select(@posts, "author_name", "title", "Babe") … … 67 67 ] 68 68 69 assert_ equal(69 assert_dom_equal( 70 70 "<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>", 71 71 options_from_collection_for_select(@posts, "author_name", "title", [ "Babe", "Cabe" ]) … … 74 74 75 75 def test_array_options_for_select 76 assert_ equal(76 assert_dom_equal( 77 77 "<option value=\"<Denmark>\"><Denmark></option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>", 78 78 options_for_select([ "<Denmark>", "USA", "Sweden" ]) … … 81 81 82 82 def test_array_options_for_select_with_selection 83 assert_ equal(83 assert_dom_equal( 84 84 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\">Sweden</option>", 85 85 options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>") … … 88 88 89 89 def test_array_options_for_select_with_selection_array 90 assert_ equal(90 assert_dom_equal( 91 91 "<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\" selected=\"selected\">Sweden</option>", 92 92 options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ]) … … 95 95 96 96 def test_array_options_for_string_include_in_other_string_bug_fix 97 assert_ equal(97 assert_dom_equal( 98 98 "<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>", 99 99 options_for_select([ "ruby", "rubyonrails" ], "rubyonrails") 100 100 ) 101 assert_ equal(101 assert_dom_equal( 102 102 "<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>", 103 103 options_for_select([ "ruby", "rubyonrails" ], "ruby") … … 106 106 107 107 def test_hash_options_for_select 108 assert_ equal(108 assert_dom_equal( 109 109 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>", 110 110 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }) … … 113 113 114 114 def test_hash_options_for_select_with_selection 115 assert_ equal(115 assert_dom_equal( 116 116 "<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>", 117 117 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar") … … 120 120 121 121 def test_hash_options_for_select_with_selection 122 assert_ equal(122 assert_dom_equal( 123 123 "<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>", 124 124 options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]) … … 132 132 ] 133 133 134 assert_ equal(134 assert_dom_equal( 135 135 "<optgroup label=\"<Africa>\"><option value=\"<sa>\"><South Africa></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>", 136 136 option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk") … … 140 140 def test_time_zone_options_no_parms 141 141 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" + 143 143 "<option value=\"B\">B</option>\n" + 144 144 "<option value=\"C\">C</option>\n" + … … 150 150 def test_time_zone_options_with_selected 151 151 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" + 153 153 "<option value=\"B\">B</option>\n" + 154 154 "<option value=\"C\">C</option>\n" + … … 160 160 def test_time_zone_options_with_unknown_selected 161 161 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" + 163 163 "<option value=\"B\">B</option>\n" + 164 164 "<option value=\"C\">C</option>\n" + … … 171 171 zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] 172 172 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" + 174 174 "<option value=\"E\">E</option>" + 175 175 "<option value=\"\">-------------</option>\n" + … … 183 183 zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] 184 184 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" + 186 186 "<option value=\"E\" selected=\"selected\">E</option>" + 187 187 "<option value=\"\">-------------</option>\n" + … … 195 195 zones = [ TimeZone.new( "B" ), TimeZone.new( "E" ) ] 196 196 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" + 198 198 "<option value=\"E\">E</option>" + 199 199 "<option value=\"\">-------------</option>\n" + … … 207 207 @post = Post.new 208 208 @post.category = "<mus>" 209 assert_ equal(209 assert_dom_equal( 210 210 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>", 211 211 select("post", "category", %w( abe <mus> hest)) … … 216 216 @post = Post.new 217 217 @post.category = "<mus>" 218 assert_ equal(218 assert_dom_equal( 219 219 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>", 220 220 select("post", "category", %w( abe <mus> hest), :include_blank => true) … … 225 225 @post = Post.new 226 226 @post.category = "" 227 assert_ equal(227 assert_dom_equal( 228 228 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>", 229 229 select("post", "category", %w( abe <mus> hest), :prompt => true) … … 234 234 @post = Post.new 235 235 @post.category = "<mus>" 236 assert_ equal(236 assert_dom_equal( 237 237 "<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>", 238 238 select("post", "category", %w( abe <mus> hest), :prompt => true) … … 243 243 @post = Post.new 244 244 @post.category = "" 245 assert_ equal(245 assert_dom_equal( 246 246 "<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>", 247 247 select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt') … … 252 252 @post = Post.new 253 253 @post.category = "" 254 assert_ equal(254 assert_dom_equal( 255 255 "<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=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>", 256 256 select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true) … … 268 268 @post.author_name = "Babe" 269 269 270 assert_ equal(270 assert_dom_equal( 271 271 "<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>", 272 272 collection_select("post", "author_name", @posts, "author_name", "author_name") … … 284 284 @post.author_name = "Babe" 285 285 286 assert_ equal(286 assert_dom_equal( 287 287 "<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\"></option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>", 288 288 collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px") … … 293 293 @post = Post.new 294 294 @post.origin = "Denmark" 295 assert_ equal(295 assert_dom_equal( 296 296 "<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