Skip to content

Commit

Permalink
Merge pull request #3806 from lest/test-helpers-in-erb
Browse files Browse the repository at this point in the history
Test helpers in erb using erb
  • Loading branch information
josevalim committed Nov 30, 2011
2 parents 271308c + e975fe7 commit ae53fcc
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 17 deletions.
8 changes: 8 additions & 0 deletions actionpack/test/abstract_unit.rb
Expand Up @@ -73,6 +73,14 @@ def body_to_string(body)
end

module RenderERBUtils
def view
@view ||= begin
path = ActionView::FileSystemResolver.new(FIXTURE_LOAD_PATH)
view_paths = ActionView::PathSet.new([path])
ActionView::Base.new(view_paths)
end
end

def render_erb(string)
template = ActionView::Template.new(
string.strip,
Expand Down
@@ -0,0 +1,3 @@
<%= content_tag 'p' do %>
<%= content_tag 'b', 'Hello' %>
<% end %>
5 changes: 2 additions & 3 deletions actionpack/test/template/form_helper_test.rb
Expand Up @@ -3,6 +3,8 @@
require 'active_support/core_ext/object/inclusion'

class FormHelperTest < ActionView::TestCase
include RenderERBUtils

tests ActionView::Helpers::FormHelper

def form_for(*)
Expand Down Expand Up @@ -231,9 +233,6 @@ def test_label_with_block
end

def test_label_with_block_in_erb
path = ActionView::FileSystemResolver.new(FIXTURE_LOAD_PATH)
view_paths = ActionView::PathSet.new([path])
view = ActionView::Base.new(view_paths)
assert_equal "<label for=\"post_message\">\n Message\n <input id=\"post_message\" name=\"post[message]\" size=\"30\" type=\"text\" />\n</label>", view.render("test/label_with_block")
end

Expand Down
16 changes: 9 additions & 7 deletions actionpack/test/template/form_tag_helper_test.rb
Expand Up @@ -2,6 +2,8 @@
require 'active_support/core_ext/object/inclusion'

class FormTagHelperTest < ActionView::TestCase
include RenderERBUtils

tests ActionView::Helpers::FormTagHelper

def setup
Expand Down Expand Up @@ -104,14 +106,14 @@ def test_form_tag_with_remote_false
end

def test_form_tag_with_block_in_erb
output_buffer = form_tag("http://www.example.com") { concat "Hello world!" }
output_buffer = render_erb("<%= form_tag('http://www.example.com') do %>Hello world!<% end %>")

expected = whole_form { "Hello world!" }
assert_dom_equal expected, output_buffer
end

def test_form_tag_with_block_and_method_in_erb
output_buffer = form_tag("http://www.example.com", :method => :put) { concat "Hello world!" }
output_buffer = render_erb("<%= form_tag('http://www.example.com', :method => :put) do %>Hello world!<% end %>")

expected = whole_form("http://www.example.com", :method => "put") do
"Hello world!"
Expand Down Expand Up @@ -485,27 +487,27 @@ def test_pass
end

def test_field_set_tag_in_erb
output_buffer = field_set_tag("Your details") { concat "Hello world!" }
output_buffer = render_erb("<%= field_set_tag('Your details') do %>Hello world!<% end %>")

expected = %(<fieldset><legend>Your details</legend>Hello world!</fieldset>)
assert_dom_equal expected, output_buffer

output_buffer = field_set_tag { concat "Hello world!" }
output_buffer = render_erb("<%= field_set_tag do %>Hello world!<% end %>")

expected = %(<fieldset>Hello world!</fieldset>)
assert_dom_equal expected, output_buffer

output_buffer = field_set_tag('') { concat "Hello world!" }
output_buffer = render_erb("<%= field_set_tag('') do %>Hello world!<% end %>")

expected = %(<fieldset>Hello world!</fieldset>)
assert_dom_equal expected, output_buffer

output_buffer = field_set_tag('', :class => 'format') { concat "Hello world!" }
output_buffer = render_erb("<%= field_set_tag('', :class => 'format') do %>Hello world!<% end %>")

expected = %(<fieldset class="format">Hello world!</fieldset>)
assert_dom_equal expected, output_buffer
end

def test_text_area_tag_options_symbolize_keys_side_effects
options = { :option => "random_option" }
text_area_tag "body", "hello world", options
Expand Down
6 changes: 4 additions & 2 deletions actionpack/test/template/record_tag_helper_test.rb
Expand Up @@ -22,6 +22,8 @@ def body
end

class RecordTagHelperTest < ActionView::TestCase
include RenderERBUtils

tests ActionView::Helpers::RecordTagHelper

def setup
Expand Down Expand Up @@ -58,13 +60,13 @@ def test_block_not_in_erb_multiple_calls

def test_block_works_with_content_tag_for_in_erb
expected = %(<tr class="post" id="post_45">#{@post.body}</tr>)
actual = content_tag_for(:tr, @post) { concat @post.body }
actual = render_erb("<%= content_tag_for(:tr, @post) do %><%= @post.body %><% end %>")
assert_dom_equal expected, actual
end

def test_div_for_in_erb
expected = %(<div class="post bar" id="post_45">#{@post.body}</div>)
actual = div_for(@post, :class => "bar") { concat @post.body }
actual = render_erb("<%= div_for(@post, :class => 'bar') do %><%= @post.body %><% end %>")
assert_dom_equal expected, actual
end

Expand Down
10 changes: 5 additions & 5 deletions actionpack/test/template/tag_helper_test.rb
@@ -1,6 +1,8 @@
require 'abstract_unit'

class TagHelperTest < ActionView::TestCase
include RenderERBUtils

tests ActionView::Helpers::TagHelper

def test_tag
Expand Down Expand Up @@ -44,12 +46,12 @@ def test_content_tag
end

def test_content_tag_with_block_in_erb
buffer = content_tag(:div) { concat "Hello world!" }
buffer = render_erb("<%= content_tag(:div) do %>Hello world!<% end %>")
assert_dom_equal "<div>Hello world!</div>", buffer
end

def test_content_tag_with_block_and_options_in_erb
buffer = content_tag(:div, :class => "green") { concat "Hello world!" }
buffer = render_erb("<%= content_tag(:div, :class => 'green') do %>Hello world!<% end %>")
assert_dom_equal %(<div class="green">Hello world!</div>), buffer
end

Expand All @@ -68,10 +70,8 @@ def test_content_tag_nested_in_content_tag_out_of_erb
output_buffer
end

# TAG TODO: Move this into a real template
def test_content_tag_nested_in_content_tag_in_erb
buffer = content_tag("p") { concat content_tag("b", "Hello") }
assert_equal '<p><b>Hello</b></p>', buffer
assert_equal "<p>\n <b>Hello</b>\n</p>", view.render("test/content_tag_nested_in_content_tag")
end

def test_content_tag_with_escaped_array_class
Expand Down

0 comments on commit ae53fcc

Please sign in to comment.